132 lines
3.2 KiB
YAML
132 lines
3.2 KiB
YAML
# Shared config for all dagster services
|
|
x-dagster: &dagster-common
|
|
env_file: .env
|
|
environment:
|
|
DAGSTER_HOME: /app/dagster_home
|
|
MLFLOW_TRACKING_URI: http://mlflow:5000
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
|
|
services:
|
|
# Metadata storage and dbt target
|
|
postgres:
|
|
image: postgres:16
|
|
container_name: postgres
|
|
restart: unless-stopped
|
|
env_file: .env
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
ports:
|
|
- "10.0.0.108:5432:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# User code gRPC server
|
|
dagster-usercode:
|
|
<<: *dagster-common
|
|
build:
|
|
context: .
|
|
target: usercode
|
|
container_name: dagster-usercode
|
|
command:
|
|
["dagster", "api", "grpc", "-h", "0.0.0.0", "-p", "4000", "-m", "data_platform.definitions"]
|
|
volumes:
|
|
- dbt-target:/app/dbt/target
|
|
- elementary-reports:/app/dbt/edr_target
|
|
expose:
|
|
- "4000"
|
|
healthcheck:
|
|
test: ["CMD", "dagster", "api", "grpc-health-check", "-p", "4000"]
|
|
interval: 15s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 30s
|
|
|
|
# Web UI
|
|
dagster-webserver:
|
|
<<: *dagster-common
|
|
build:
|
|
context: .
|
|
target: dagster-infra
|
|
container_name: dagster-webserver
|
|
command:
|
|
["dagster-webserver", "-h", "0.0.0.0", "-p", "3000", "-w", "/app/dagster_home/workspace.yaml"]
|
|
ports:
|
|
- "3000:3000"
|
|
depends_on:
|
|
dagster-usercode:
|
|
condition: service_healthy
|
|
|
|
# Schedules, sensors and run queuing
|
|
dagster-daemon:
|
|
<<: *dagster-common
|
|
build:
|
|
context: .
|
|
target: dagster-infra
|
|
container_name: dagster-daemon
|
|
command: ["dagster-daemon", "run", "-w", "/app/dagster_home/workspace.yaml"]
|
|
depends_on:
|
|
dagster-usercode:
|
|
condition: service_healthy
|
|
|
|
# pgAdmin web UI
|
|
pgadmin:
|
|
image: dpage/pgadmin4:latest
|
|
container_name: pgadmin
|
|
restart: unless-stopped
|
|
env_file: .env
|
|
environment:
|
|
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL}
|
|
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD}
|
|
volumes:
|
|
- pgadmin-data:/var/lib/pgadmin
|
|
- ./pgadmin/servers.json:/pgadmin4/servers.json:ro
|
|
ports:
|
|
- "5050:80"
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
|
|
# MLflow experiment tracking server
|
|
mlflow:
|
|
image: python:3.12-slim
|
|
container_name: mlflow
|
|
restart: unless-stopped
|
|
env_file: .env
|
|
entrypoint: ["sh", "/mlflow/start.sh"]
|
|
volumes:
|
|
- mlflow-artifacts:/mlflow/artifacts
|
|
- ./mlflow/start.sh:/mlflow/start.sh:ro
|
|
ports:
|
|
- "5000:5000"
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
|
|
# Elementary data observability report
|
|
elementary-web:
|
|
image: nginx:alpine
|
|
container_name: elementary-web
|
|
restart: unless-stopped
|
|
volumes:
|
|
- elementary-reports:/usr/share/nginx/html:ro
|
|
- ./nginx/elementary.conf:/etc/nginx/conf.d/default.conf:ro
|
|
ports:
|
|
- "8080:80"
|
|
|
|
volumes:
|
|
postgres-data:
|
|
dbt-target:
|
|
pgadmin-data:
|
|
elementary-reports:
|
|
mlflow-artifacts:
|