version: "3.8" services: app: build: . ports: - "${PORT:-3000}:3000" environment: DATABASE_URL: postgresql://echoboard:${DB_PASSWORD}@db:5432/echoboard APP_MASTER_KEY: ${APP_MASTER_KEY} APP_BLIND_INDEX_KEY: ${APP_BLIND_INDEX_KEY} TOKEN_SECRET: ${TOKEN_SECRET} JWT_SECRET: ${JWT_SECRET} ALTCHA_HMAC_KEY: ${ALTCHA_HMAC_KEY} WEBAUTHN_RP_NAME: ${WEBAUTHN_RP_NAME:-Echoboard} WEBAUTHN_RP_ID: ${WEBAUTHN_RP_ID} WEBAUTHN_ORIGIN: ${WEBAUTHN_ORIGIN} VAPID_PUBLIC_KEY: ${VAPID_PUBLIC_KEY} VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY} VAPID_CONTACT: ${VAPID_CONTACT} NODE_ENV: production depends_on: db: condition: service_healthy db: image: postgres:16-alpine environment: POSTGRES_DB: echoboard POSTGRES_USER: echoboard POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U echoboard"] interval: 5s timeout: 3s retries: 5 volumes: pgdata: