# documentation: https://trigger.dev
# slogan: The open source Background Jobs framework for TypeScript
# tags: trigger.dev, background jobs, typescript, trigger, jobs, cron, scheduler
# logo: svgs/trigger.png
# port: 3000

services:
  trigger:
    image: ghcr.io/triggerdotdev/trigger.dev:latest
    environment:
      - SERVICE_FQDN_TRIGGER_3000
      - LOGIN_ORIGIN=$SERVICE_FQDN_TRIGGER
      - APP_ORIGIN=$SERVICE_FQDN_TRIGGER
      - MAGIC_LINK_SECRET=$SERVICE_PASSWORD_64_MAGIC
      - ENCRYPTION_KEY=$SERVICE_PASSWORD_64_ENCRYPTION
      - SESSION_SECRET=$SERVICE_PASSWORD_64_SESSION
      - POSTGRES_USER=$SERVICE_USER_POSTGRES
      - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
      - POSTGRES_DB=${POSTGRES_DB:-trigger}
      - POSTGRES_HOST=postgres
      - DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/$POSTGRES_DB
      - DIRECT_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/$POSTGRES_DB
      - RUNTIME_PLATFORM=docker-compose
      - NODE_ENV=production
      - AUTH_GITHUB_CLIENT_ID=${AUTH_GITHUB_CLIENT_ID}
      - AUTH_GITHUB_CLIENT_SECRET=${AUTH_GITHUB_CLIENT_SECRET}
      - RESEND_API_KEY=${RESEND_API_KEY}
      - FROM_EMAIL=${FROM_EMAIL}
      - REPLY_TO_EMAIL=${REPLY_TO_EMAIL}
    depends_on:
      postgresql:
        condition: service_healthy
    healthcheck:
      test: ["NONE"]
  postgresql:
    image: postgres:16-alpine
    volumes:
      - postgresql-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=$SERVICE_USER_POSTGRES
      - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
      - POSTGRES_DB=${POSTGRES_DB:-trigger}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 20s
      retries: 10

