services:
  api:
    image: 'ghcr.io/theorchard/songwhip-api:master'

    depends_on:
      database:
        condition: service_healthy

    environment:
      - AUTH0_CLIENT_ID=MOCK_AUTH0_CLIENT_ID
      - AUTH0_CLIENT_SECRET=MOCK_AUTH0_CLIENT_SECRET
      - AUTH0_ISSUER_BASE_URL=https://qa-orchard.auth0.com
      - AUTH0_M2M_AUDIENCE=MOCK_AUTH0_M2M_AUDIENCE
      - AUTH0_M2M_CLIENT_ID=MOCK_AUTH0_M2M_CLIENT_ID
      - AUTH0_M2M_CLIENT_SECRET=MOCK_AUTH0_M2M_CLIENT_SECRET
      - AUTH0_M2M_BASE_URL=MOCK_AUTH0_M2M_BASE_URL
      - AWS_KEY=MOCK_AWS_KEY
      - AWS_SECRET=MOCK_AWS_SECRET
      - AWS_UPLOAD_BUCKET=MOCK_AWS_UPLOAD_BUCKET
      - CLOUDFLARE_TOKEN=MOCK_CLOUDFLARE_TOKEN
      - CLOUDFLARE_ACCOUNT_EMAIL=MOCK_CLOUDFLARE_ACCOUNT_EMAIL
      - CLOUDFLARE_ACCOUNT_TOKEN=MOCK_CLOUDFLARE_ACCOUNT_TOKEN
      - CLOUDFLARE_ZONE_ID=MOCK_CLOUDFLARE_ZONE_ID
      - CLOUDFLARE_CUSTOM_DOMAINS_WORKER_NAME=MOCK_CLOUDFLARE_CUSTOM_DOMAINS_WORKER_NAME

      # output logs for SONGWHIP_API_LOGFILE content in ci
      - DEBUG=song*
      - DEBUG_PRETTY=true
      - DEBUG_COLORS=false

      - GOOGLE_AUTH_CLIENT_ID=MOCK_GOOGLE_AUTH_CLIENT_ID
      - JWT_SECRET=jwt/songwhip-api/test
      - NODE_ENV=production

      # Use fake gql endpoint to ensure unmocked requests fail fast
      # (don't hang). all mock-sub-requests use the `*theorchard.io*`
      # pattern to match so this part must stay the same.
      - ORCHARD_OWS_URL=https://mock-ows-grass.theorchard.io/

      - ORCHARD_DMP_KMS_KEY_ID=MOCK_ORCHARD_DMP_KMS_KEY_ID
      - ORCHARD_TOKEN_KMS_KEY_ID=MOCK_ORCHARD_TOKEN_KMS_KEY_ID
      - ORCHARD_KAFKA_BROKERS=MOCK_ORCHARD_KAFKA_BROKERS
      - PORT=5002
      - POSTGRES_HOST=database
      - POSTGRES_PORT=5432
      - POSTGRES_DB=songwhip_api
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - PUBLIC_ENDPOINT=http://localhost:5004/v3/
      - SONGWHIP_ENV=test
      - SONGWHIP_ANALYTICS_URL=https://analytics-staging.songwhip.com
      - SONGWHIP_RELEASE_TASKS_URL=http://release-tasks-staging.songwhip.com
      - SONGWHIP_RELEASE_TASKS_API_KEY=MOCK_SONGWHIP_RELEASE_TASKS_API_KEY
      - SONGWHIP_QUEUE_API_KEY=MOCK_SONGWHIP_QUEUE_API_KEY
      - SONGWHIP_EMAIL_API_KEY=MOCK_SONGWHIP_EMAIL_API_KEY
      - SONGWHIP_LOOKUP_API_KEY=MOCK_SONGWHIP_LOOKUP_API_KEY
      - SONGWHIP_AE_API_KEY=MOCK_SONGWHIP_AE_API_KEY
      - SONGWHIP_API_URLS=https://api.songwhip.com
      - SONGWHIP_LOOKUP_URL=https://lookup.songwhip.com
      - SONGWHIP_WEB_URL=http://localhost:3001
      - SONGWHIP_APPRECIATION_ENGINE_ENDPOINT=https://appreciation-engine-staging.songwhip.com
      - SONGWHIP_TRUSTED_ORIGINS=localhost
      - SONGWHIP_GUARDIAN_REVIEW_SECRET=MOCK_SONGWHIP_GUARDIAN_REVIEW_SECRET
      - AE_API_TOKEN=MOCK_AE_API_TOKEN
      - STRIPE_PRIVATE_KEY=MOCK_STRIPE_PRIVATE_KEY
      - STRIPE_WEBHOOK_SECRET=MOCK_STRIPE_WEBHOOK_SECRET
      - TICKETMASTER_API_KEY=MOCK_TICKETMASTER_API_KEY
      - SQS_QUEUE_URL=MOCK_SQS_QUEUE_URL
      - HLS_CLOUDFRONT_PRIVATE_KEY=MOCK_HLS_CLOUDFRONT_PRIVATE_KEY
      - CLOUDFRONT_KEY_PAIR_ID=MOCK_CLOUDFRONT_KEY_PAIR_ID
      - CLOUDFRONT_DOMAIN=hls.aws-staging.songwhip.com
      - BEDROCK_MODEL_ID=MOCK_BEDROCK_MODEL_ID

    ports:
      - '5004:5002'

  database:
    image: 'postgres:10.12-alpine'

    environment:
      - POSTGRES_DB=songwhip_api
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_PORT=5444

    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U postgres']
      interval: 5s
      timeout: 5s
      retries: 5

    # 5432 on docker-compose network, mapped to localhost:5444
    # on host machine if needed for debugging
    ports:
      - '5444:5432'
