diff --git a/public/svgs/superset.svg b/public/svgs/superset.svg new file mode 100644 index 000000000..522c3b28a --- /dev/null +++ b/public/svgs/superset.svg @@ -0,0 +1,9 @@ + + + Superset + + + + + + diff --git a/templates/compose/superset-unofficial-with-postgresql.yaml b/templates/compose/superset-unofficial-with-postgresql.yaml new file mode 100644 index 000000000..ae1680ac9 --- /dev/null +++ b/templates/compose/superset-unofficial-with-postgresql.yaml @@ -0,0 +1,93 @@ +# documentation: https://github.com/amancevice/docker-superset +# slogan: Modern data exploration and visualization platform (unofficial docker image) +# tags: analytics,bi,dashboard,database,sql,unofficial +# logo: svgs/superset.svg +# port: 8088 + +services: + superset: + image: amancevice/superset + restart: always + depends_on: + - superset_postgres + - superset_redis + environment: + - SERVICE_FQDN_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=superset + - 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", "") + COOLIFY_RESOURCE_UUID = os.getenv('COOLIFY_RESOURCE_UUID') + + CACHE_CONFIG = { + "CACHE_TYPE": "RedisCache", + "CACHE_DEFAULT_TIMEOUT": 300, + "CACHE_KEY_PREFIX": "superset_", + "CACHE_REDIS_HOST": "superset_redis", + "CACHE_REDIS_PORT": 6379, + "CACHE_REDIS_DB": 1, + "CACHE_REDIS_URL": f"redis://:{os.getenv('REDIS_PASSWORD')}@superset_redis-{COOLIFY_RESOURCE_UUID}: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')}@superset_postgres-{COOLIFY_RESOURCE_UUID}: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 + healthcheck: + test: ["CMD", "curl", "-f", "http://127.0.0.1:8088/health"] + interval: 5s + timeout: 20s + retries: 10 + + superset_postgres: + image: postgres + restart: always + environment: + - POSTGRES_USER=${SERVICE_USER_POSTGRES} + - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES} + - POSTGRES_DB=superset + 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 + + superset_redis: + image: redis + restart: always + volumes: + - superset_redis_data:/data + command: redis-server --requirepass ${SERVICE_PASSWORD_REDIS} + healthcheck: + test: redis-cli ping + interval: 5s + timeout: 20s + retries: 10 + +volumes: + superset_postgres_data: + superset_redis_data: