version: "3.9" # Shared config for all dagster services x-dagster: &dagster-common build: context: . dockerfile: Dockerfile env_file: .env environment: DAGSTER_HOME: /app/dagster_home volumes: - dbt-target:/app/dbt/target 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 # Web UI dagster-webserver: <<: *dagster-common container_name: dagster-webserver command: ["dagster-webserver", "-h", "0.0.0.0", "-p", "3000"] ports: - "3000:3000" # Schedules, sensors and run queuing dagster-daemon: <<: *dagster-common container_name: dagster-daemon command: ["dagster-daemon", "run"] volumes: postgres-data: dbt-target: