美文网首页
Superset Docker部署

Superset Docker部署

作者: EasyNetCN | 来源:发表于2023-09-19 08:48 被阅读0次

Superset提供了Docker部署方式,但是基于自己的环境如何部署,官方并没有提供,也很少有其他文章,下面给出了几点总结,仅供参考。

使用自己的MySQL和Redis。注意,经过测试,celery不能使用有密码的Redis

#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
x-superset-image: &superset-image apachesuperset.docker.scarf.sh/apache/superset:${TAG:-latest-dev}
x-superset-volumes:
  &superset-volumes # /app/pythonpath_docker will be appended to the PYTHONPATH in the final container
  - ./docker:/app/docker
  - superset_home:/app/superset_home

version: "3.7"
services:
  superset:
    env_file: docker/.env-non-dev
    image: *superset-image
    container_name: superset_app
    command: ["/app/docker/docker-bootstrap.sh", "app-gunicorn"]
    user: "root"
    restart: unless-stopped
    ports:
      - 8088:8088
    volumes: *superset-volumes
    environment:
      - DATABASE_DIALECT=mysql
      - DATABASE_HOST=
      - DATABASE_PORT=3306
      - DATABASE_DB=superset
      - DATABASE_USER=superset
      - DATABASE_PASSWORD=
      - REDIS_HOST=
      - REDIS_PORT=6379

  superset-init:
    image: *superset-image
    container_name: superset_init
    command: ["/app/docker/docker-init.sh"]
    env_file: docker/.env-non-dev
    user: "root"
    volumes: *superset-volumes
    healthcheck:
      disable: true
    environment:
      - DATABASE_DIALECT=mysql
      - DATABASE_HOST=
      - DATABASE_PORT=3306
      - DATABASE_DB=superset
      - DATABASE_USER=superset
      - DATABASE_PASSWORD=
      - REDIS_HOST=
      - REDIS_PORT=6379
      - SUPERSET_LOAD_EXAMPLES=no

  superset-worker:
    image: *superset-image
    container_name: superset_worker
    command: ["/app/docker/docker-bootstrap.sh", "worker"]
    env_file: docker/.env-non-dev
    restart: unless-stopped
    user: "root"
    volumes: *superset-volumes
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "celery -A superset.tasks.celery_app:app inspect ping -d celery@$$HOSTNAME",
        ]
    environment:
      - DATABASE_DIALECT=mysql
      - DATABASE_HOST=
      - DATABASE_PORT=3306
      - DATABASE_DB=superset
      - DATABASE_USER=superset
      - DATABASE_PASSWORD=
      - REDIS_HOST=
      - REDIS_PORT=6379

  superset-worker-beat:
    image: *superset-image
    container_name: superset_worker_beat
    command: ["/app/docker/docker-bootstrap.sh", "beat"]
    env_file: docker/.env-non-dev
    restart: unless-stopped
    user: "root"
    volumes: *superset-volumes
    healthcheck:
      disable: true
    environment:
      - DATABASE_DIALECT=mysql
      - DATABASE_HOST=
      - DATABASE_PORT=3306
      - DATABASE_DB=superset
      - DATABASE_USER=superset
      - DATABASE_PASSWORD=
      - REDIS_HOST=
      - REDIS_PORT=6379

volumes:
  superset_home:
    external: false
  db_home:
    external: false
  redis:
    external: false

增加驱动依赖,在docker目录下创建requirements-local.txt文件。比如增加kylin驱动

kylinpy

使用国内源,修改docker目录下的docker-bootstrap.sh文件

#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

set -eo pipefail

REQUIREMENTS_LOCAL="/app/docker/requirements-local.txt"
# If Cypress run – overwrite the password for admin and export env variables
if [ "$CYPRESS_CONFIG" == "true" ]; then
    export SUPERSET_CONFIG=tests.integration_tests.superset_test_config
    export SUPERSET_TESTENV=true
    export SUPERSET__SQLALCHEMY_DATABASE_URI=postgresql+psycopg2://superset:superset@db:5432/superset
fi
#
# Make sure we have dev requirements installed
#
if [ -f "${REQUIREMENTS_LOCAL}" ]; then
  echo "Installing local overrides at ${REQUIREMENTS_LOCAL}"
  pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir -r "${REQUIREMENTS_LOCAL}" 
else
  echo "Skipping local overrides"
fi

case "${1}" in
  worker)
    echo "Starting Celery worker..."
    celery --app=superset.tasks.celery_app:app worker -O fair -l INFO
    ;;
  beat)
    echo "Starting Celery beat..."
    rm -f /tmp/celerybeat.pid
    celery --app=superset.tasks.celery_app:app beat --pidfile /tmp/celerybeat.pid -l INFO -s "${SUPERSET_HOME}"/celerybeat-schedule
    ;;
  app)
    echo "Starting web app (using development server)..."
    flask run -p 8088 --with-threads --reload --debugger --host=0.0.0.0
    ;;
  app-gunicorn)
    echo "Starting web app..."
    /usr/bin/run-server.sh
    ;;
  *)
    echo "Unknown Operation!!!"
    ;;
esac

重置密码

docker exec -it superset_app /bin/bash
superset fab reset-password --username admin --password yourpassword

相关文章

网友评论

      本文标题:Superset Docker部署

      本文链接:https://www.haomeiwen.com/subject/ogsnvdtx.html