Superset
出现一些问题 不能简单部署到nas
github apache/superset: Apache Superset is a Data Visualization and Data Exploration Platform
docx intro | Superset
git clone --depth=1 https://github.com/apache/superset.git 最无脑的配置: docker compose -f docker-compose-non-dev.yml up 编辑配置以实现长久化存储
# 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. # ----------------------------------------------------------------------- # We don't support docker compose for production environments. # If you choose to use this type of deployment make sure to # create you own docker environment file (docker/.env) with your own # unique random secure passwords and SECRET_KEY. # ----------------------------------------------------------------------- x-superset-volumes: &superset-volumes - ./docker:/app/docker - E:/Software/Foreign/superset/save/data:/app/superset_home x-common-build: &common-build context: . target: dev cache_from: - apache/superset-cache:3.10-slim-bookworm services: redis: image: redis:7 container_name: superset_cache restart: unless-stopped volumes: - E:/Software/Foreign/superset/save/redis:/data db: env_file: - path: docker/.env required: true - path: docker/.env-local required: false image: postgres:15 container_name: superset_db restart: unless-stopped volumes: - E:/Software/Foreign/superset/save/db:/var/lib/postgresql/data - ./docker/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d superset: env_file: - path: docker/.env required: true - path: docker/.env-local required: false build: <<: *common-build container_name: superset_app command: ["/app/docker/docker-bootstrap.sh", "app-gunicorn"] user: "root" restart: unless-stopped ports: - 10010:8088 depends_on: superset-init: condition: service_completed_successfully volumes: *superset-volumes environment: SUPERSET_LOG_LEVEL: "${SUPERSET_LOG_LEVEL:-info}" superset-init: container_name: superset_init build: <<: *common-build command: ["/app/docker/docker-init.sh"] env_file: - path: docker/.env required: true - path: docker/.env-local required: false depends_on: db: condition: service_started redis: condition: service_started user: "root" volumes: *superset-volumes healthcheck: disable: true environment: SUPERSET_LOAD_EXAMPLES: "${SUPERSET_LOAD_EXAMPLES:-yes}" SUPERSET_LOG_LEVEL: "${SUPERSET_LOG_LEVEL:-info}" superset-worker: build: <<: *common-build container_name: superset_worker command: ["/app/docker/docker-bootstrap.sh", "worker"] env_file: - path: docker/.env required: true - path: docker/.env-local required: false restart: unless-stopped depends_on: superset-init: condition: service_completed_successfully user: "root" volumes: *superset-volumes healthcheck: test: [ "CMD-SHELL", "celery -A superset.tasks.celery_app:app inspect ping -d celery@$$HOSTNAME", ] environment: SUPERSET_LOG_LEVEL: "${SUPERSET_LOG_LEVEL:-info}" superset-worker-beat: build: <<: *common-build container_name: superset_worker_beat command: ["/app/docker/docker-bootstrap.sh", "beat"] env_file: - path: docker/.env required: true - path: docker/.env-local required: false restart: unless-stopped depends_on: superset-init: condition: service_completed_successfully user: "root" volumes: *superset-volumes healthcheck: disable: true environment: SUPERSET_LOG_LEVEL: "${SUPERSET_LOG_LEVEL:-info}" 导航到有docker-compose-non-dev.yml目录即可 docker compose -f docker-compose-non-dev.yml up 最后除了superset_init之外其余的容器是打开状态即可
Metabase
official pages Metabase
不需要提前创建文件夹 只需要配置好两个容器 metabase和它的数据库 prostgreSQL
以下比较无脑 创建一个应用俩容器 一个metabase 一个postgresql
version: "3.8" services: metabase: image: metabase/metabase:latest container_name: metabase hostname: metabase volumes: - /share/Container/metabase/data:/metabase_data ports: - 10011:3000 environment: MB_DB_TYPE: postgres MB_DB_DBNAME: metabaseappdb MB_DB_PORT: 5432 MB_DB_USER: metabase MB_DB_PASS: mysecretpassword MB_DB_HOST: postgres networks: - metanet1 healthcheck: test: curl --fail -I https://127.0.0.1:3000/api/health || exit 1 interval: 15s timeout: 5s retries: 5 postgres: image: postgres:latest container_name: postgres hostname: postgres volumes: - /share/Container/metabase/postgresql:/var/lib/postgresql/data environment: POSTGRES_USER: metabase POSTGRES_DB: metabaseappdb POSTGRES_PASSWORD: mysecretpassword networks: - metanet1 networks: metanet1: driver: bridge
以下是 mysql为独立容器时我的配置
version: "3.8" services: metabase: image: metabase/metabase:latest container_name: metabase hostname: metabase volumes: - /share/Container/metabase/data:/metabase_data ports: - 10011:3000 networks: - mysql_mysql networks: mysql_mysql: external: true # 使用外部网络 mysql
Redash
Redash helps you make sense of your data
本机 不注重数据长久化存储 version: "2" services: server: image: redash/redash:latest command: server depends_on: - postgres - redis environment: REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" REDASH_COOKIE_SECRET: "D7f[)4RU]GDF7F5}@&Ne|'MGznvaXESM" ports: - "10012:5000" worker: image: redash/redash:latest command: worker depends_on: - redis - postgres environment: REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" REDASH_COOKIE_SECRET: "D7f[)4RU]GDF7F5}@&Ne|'MGznvaXESM" redis: image: redis:6.2 postgres: image: postgres:13 environment: POSTGRES_HOST_AUTH_METHOD: trust volumes: - postgres-data:/var/lib/postgresql/data volumes: postgres-data: 增添持久化存储机制
长久化存储
version: "2" services: server: image: redash/redash:latest command: server depends_on: - postgres - redis environment: REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" REDASH_COOKIE_SECRET: "D7f[)4RU]GDF7F5}@&Ne|'MGznvaXESM" ports: - "10012:5000" worker: image: redash/redash:latest command: worker depends_on: - redis - postgres environment: REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" REDASH_COOKIE_SECRET: "D7f[)4RU]GDF7F5}@&Ne|'MGznvaXESM" redis: image: redis:6.2 volumes: - /share/Container/redash/redis-data:/data postgres: image: postgres:13 environment: POSTGRES_HOST_AUTH_METHOD: trust volumes: - /share/Container/redash/postgres-data:/var/lib/postgresql/data
容器弄好后还需要初始化 Redash 数据库
Redash 需要初始化数据库才能正常工作。执行以下命令:
- 进入 Redash server 容器:bash
docker exec -it redash_server_1 /bin/bash
- 在容器内运行数据库迁移和初始化命令:
/app/bin/docker-entrypoint create_db
- 初始化完成后,退出容器:exit