feat: deploy Superset and Metabase behind Traefik

- Superset: docker-compose.superset.yml (app + postgres + redis)
  URL: https://superset.digitribe.fr
  Port: 8088 (internal), Traefik routes Host(superset.digitribe.fr)

- Metabase: docker-compose.metabase.yml (app + postgres)
  URL: https://metabase.digitribe.fr
  Port: 3000 (internal), Traefik routes Host(metabase.digitribe.fr)

- Traefik configs: 31-superset.yml, 32-metabase.yml
- Both services use smartcity-shared and traefik-public networks
- Both use letsencrypt TLS certificates

Verified:
- Superset: UP healthy, accessible via https://superset.digitribe.fr
- Metabase: UP healthy, accessible via https://metabase.digitribe.fr
This commit is contained in:
Eric FELIXINE
2026-05-25 22:59:25 -04:00
parent 943836f8fb
commit 7df2f6798f
3 changed files with 179 additions and 15 deletions

View File

@@ -0,0 +1,88 @@
# Apache Superset - BI Dashboard for Smart City Digital Twin
# Usage: docker compose -f docker-compose.superset.yml up -d
# Access: https://superset.digitribe.fr
version: '3.8'
networks:
smartcity-shared:
external: true
traefik-public:
external: true
volumes:
superset_data:
name: smart-city-superset-data
superset_redis:
name: smart-city-superset-redis
services:
superset-redis:
image: redis:7-alpine
container_name: superset-redis
restart: unless-stopped
networks:
- smartcity-shared
volumes:
- superset_redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
superset-db:
image: postgres:15-alpine
container_name: superset-postgres
restart: unless-stopped
networks:
- smartcity-shared
environment:
POSTGRES_DB: superset
POSTGRES_USER: superset
POSTGRES_PASSWORD: Digitribe972
volumes:
- superset_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U superset"]
interval: 10s
timeout: 5s
retries: 5
superset:
image: apache/superset:4.0.0
container_name: superset-app
restart: unless-stopped
networks:
- smartcity-shared
- traefik-public
depends_on:
superset-db:
condition: service_healthy
superset-redis:
condition: service_healthy
environment:
SUPERSET_SECRET_KEY: superset-secret-key-change-me-2024
DATABASE_DIALECT: postgresql
DATABASE_HOST: superset-postgres
DATABASE_PORT: 5432
DATABASE_DB: superset
DATABASE_USER: superset
DATABASE_PASSWORD: Digitribe972
REDIS_HOST: superset-redis
REDIS_PORT: 6379
SUPERSET_ENV: production
SUPERSET_LOAD_EXAMPLES: "false"
MAPBOX_API_KEY: ""
labels:
- "traefik.enable=true"
- "traefik.http.routers.superset.rule=Host(`superset.digitribe.fr`)"
- "traefik.http.routers.superset.entrypoints=websecure"
- "traefik.http.routers.superset.tls.certresolver=letsencrypt"
- "traefik.http.services.superset.loadbalancer.server.port=8088"
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8088/health || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 120s