# This is an UNOFFICIAL production docker image build for Superset:
# - https://github.com/amancevice/docker-superset


# ## SETUP INSTRUCTIONS
#
# After deploying this image, you will need to run one of the two
# commands below in a terminal within the superset container:
#      $ superset-demo     # Initialise database + load demo charts/datasets
#      $ superset-init     # Initialise database only
#
# You will be prompted to enter the credentials for the admin user.


# ## NETWORK INSTRUCTIONS
#
# If you want to connect superset with other internal databases managed by
# Dokploy (on dokploy-network) using internal hostnames, you will need to
# uncomment the `networks` section, both for the superset container and
# at the very bottom of this docker-compose template.
#
# Note that the `superset` service name/hostname will not be unique on the
# global `dokploy-network`. If you plan to:
#
# 1. deploy a second instance of superset on dokploy-network, and
# 2. have other containers on dokploy-network utilise the second instance's
#    Superset API (https://superset.apache.org/docs/api)
#
# Please change the service name of the second instance.

services:
  superset:
    image: amancevice/superset
    restart: always
    #networks:
    #  - dokploy-network
    depends_on:
      - superset_postgres
      - superset_redis
    volumes:
      # This superset_config.py can be edited in Dokploy's UI Advanced -> Volume Mount
      - ../files/superset/superset_config.py:/etc/superset/superset_config.py
    environment:
      SECRET_KEY: ${SECRET_KEY}
      MAPBOX_API_KEY: ${MAPBOX_API_KEY}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
      REDIS_PASSWORD: ${REDIS_PASSWORD}
      # Ensure the hosts matches your service names below.
      POSTGRES_HOST: superset_postgres
      REDIS_HOST: superset_redis

  superset_postgres:
    image: postgres
    restart: always
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - superset_postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 30s
      timeout: 10s
      retries: 3

  superset_redis:
    image: redis
    restart: always
    volumes:
      - superset_redis_data:/data
    command: redis-server --requirepass ${REDIS_PASSWORD}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 30s
      timeout: 10s
      retries: 3

#networks:
#  dokploy-network:
#    external: true

volumes:
  superset_postgres_data:
  superset_redis_data:
