# documentation: https://github.com/amancevice/docker-superset # slogan: Modern data exploration and visualization platform (unofficial community docker image) # category: analytics # tags: analytics,bi,dashboard,database,sql,unofficial # logo: svgs/superset.svg # port: 8088 services: superset: image: amancevice/superset:latest environment: - SERVICE_URL_SUPERSET_8088 - SECRET_KEY=${SERVICE_BASE64_64_SUPERSETSECRETKEY} - MAPBOX_API_KEY=${MAPBOX_API_KEY} - POSTGRES_USER=${SERVICE_USER_POSTGRES} - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES} - POSTGRES_DB=${POSTGRES_DB:-superset-db} - REDIS_PASSWORD=${SERVICE_PASSWORD_REDIS} volumes: - type: bind source: ./superset/superset_config.py target: /etc/superset/superset_config.py content: | """ For more configuration options, see: - https://superset.apache.org/docs/configuration/configuring-superset """ import os SECRET_KEY = os.getenv("SECRET_KEY") MAPBOX_API_KEY = os.getenv("MAPBOX_API_KEY", "") CACHE_CONFIG = { "CACHE_TYPE": "RedisCache", "CACHE_DEFAULT_TIMEOUT": 300, "CACHE_KEY_PREFIX": "superset_", "CACHE_REDIS_HOST": "redis", "CACHE_REDIS_PORT": 6379, "CACHE_REDIS_DB": 1, "CACHE_REDIS_URL": f"redis://:{os.getenv('REDIS_PASSWORD')}@redis:6379/1", } FILTER_STATE_CACHE_CONFIG = {**CACHE_CONFIG, "CACHE_KEY_PREFIX": "superset_filter_"} EXPLORE_FORM_DATA_CACHE_CONFIG = {**CACHE_CONFIG, "CACHE_KEY_PREFIX": "superset_explore_form_"} SQLALCHEMY_TRACK_MODIFICATIONS = True SQLALCHEMY_DATABASE_URI = f"postgresql+psycopg2://{os.getenv('POSTGRES_USER')}:{os.getenv('POSTGRES_PASSWORD')}@postgres:5432/{os.getenv('POSTGRES_DB')}" # Uncomment if you want to load example data (using "superset load_examples") at the # same location as your metadata postgresql instance. Otherwise, the default sqlite # will be used, which will not persist in volume when restarting superset by default. #SQLALCHEMY_EXAMPLES_URI = SQLALCHEMY_DATABASE_URI depends_on: postgres: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://127.0.0.1:8088/health"] interval: 5s timeout: 20s retries: 10 postgres: image: postgres:17-alpine environment: - POSTGRES_USER=${SERVICE_USER_POSTGRES} - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES} - POSTGRES_DB=${POSTGRES_DB:-superset-db} volumes: - superset_postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 20s retries: 10 redis: image: redis:8-alpine volumes: - superset_redis_data:/data command: redis-server --requirepass ${SERVICE_PASSWORD_REDIS} healthcheck: test: redis-cli ping interval: 5s timeout: 20s retries: 10