name: "Disco Stu Compose - Prod" services: web: container_name: web restart: always build: context: . dockerfile: atcr.io/besaid.zone/discostuweb:1.0 target: web ports: - 8002:8002 depends_on: db: condition: service_healthy bot: condition: service_started environment: PUBLIC_URL: "${PUBLIC_URL:?PUBLIC_URL is required}" PRIVATE_KEYS: "${PRIVATE_KEYS:?PRIVATE_KEYS is required}" COOKIE_SECRET: "${COOKIE_SECRET:?COOKIE_SECRET is required}" healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost:8002/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s tapper: container_name: tapper build: context: . dockerfile: atcr.io/besaid.zone/discostutapper:1.0 target: tapper depends_on: db: condition: service_healthy environment: NODE_ENV: production TAP_ADMIN_PASSWORD: "${TAP_ADMIN_PASSWORD:?TAP_ADMIN_PASSWORD is required}" bot: container_name: bot restart: always build: context: . dockerfile: atcr.io/besaid.zone/discostubot:1.0 target: bot depends_on: db: condition: service_healthy environment: NODE_ENV: production DISCORD_BOT_TOKEN: "${DISCORD_BOT_TOKEN:?DISCORD_BOT_TOKEN is required}" DISCORD_APPLICATION_ID: "${DISCORD_APPLICATION_ID:?DISCORD_APPLICATION_ID is required}" DISCORD_GUILD_ID: "${DISCORD_GUILD_ID:?DISCORD_GUILD_ID is required}" db: image: postgres:18.1 healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 10s retries: 5 start_period: 30s timeout: 10s restart: always environment: POSTGRES_USER: "${POSTGRES_USER:?POSTGRES_USER is required}" POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}" POSTGRES_DB: "${POSTGRES_DB:?POSTGRES_DB is required}" ports: - 5432:5432 volumes: - "postgres-data:/var/lib/postgresql/data" volumes: postgres-data: