# documentation: https://docs.useplunk.com/getting-started/introduction
# slogan: Plunk, The Open-Source Email Platform for AWS
# tags: plunk,email,automation,aws
# logo: svgs/plunk.svg
# port: 3000

version: '3'
services:
  plunk:
    image: driaug/plunk
    depends_on:
      postgresql:
        condition: service_healthy
      redis:
        condition: service_started
    environment:
      - SERVICE_FQDN_PLUNK_3000
      - REDIS_URL=redis://redis:6379
      - DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql/plunk?schema=public
      - JWT_SECRET=${SERVICE_PASSWORD_JWT_SECRET}
      - AWS_REGION=${AWS_REGION}
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_SES_CONFIGURATION_SET=${AWS_SES_CONFIGURATION_SET}
      - NEXT_PUBLIC_API_URI=${SERVICE_FQDN_PLUNK}/api
      - APP_URI=${SERVICE_FQDN_PLUNK}
      - API_URI=${SERVICE_FQDN_PLUNK}/api
      - DISABLE_SIGNUPS=False
    entrypoint: [ "/app/entry.sh" ]
    healthcheck:
      test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:3000"]
      interval: 2s
      timeout: 10s
      retries: 15
  postgresql:
    image: postgres:16-alpine
    environment:
      - POSTGRES_USER=$SERVICE_USER_POSTGRES
      - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
      - POSTGRES_DB=${POSTGRES_DB:-plunk}
    volumes:
      - postgresql-data:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -U postgres -d postgres" ]
      interval: 5s
      timeout: 10s
      retries: 20
  redis:
    image: "redis:7.4-alpine"
    volumes:
      - "redis-data:/data"
    healthcheck:
      test:
        - CMD
        - redis-cli
        - PING
      interval: 5s
      timeout: 10s
      retries: 20
