数据可视化相关开源软件和专业软件

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

github metabase/metabase: The easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart:

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 需要初始化数据库才能正常工作。执行以下命令:

  1. 进入 Redash server 容器:bashdocker exec -it redash_server_1 /bin/bash
  2. 在容器内运行数据库迁移和初始化命令: /app/bin/docker-entrypoint create_db
  3. 初始化完成后,退出容器:exit

本技术内容仅供学习和交流使用,如有疑问请联系qq2014160588并注明来意。请确保在使用过程中遵守相关法律法规。任何因使用本技术内容而导致的直接或间接损失,作者概不负责。用户需自行承担因使用本技术内容而产生的所有风险和责任。请勿将本技术内容用于任何非法用途。
上一篇
下一篇