# documentation: https://rxresu.me/
# slogan: A one-of-a-kind resume builder that keeps your privacy in mind.
# tags: reactive-resume,resume-builder,open-source,2fa
# logo: svgs/rxresume.svg
# port: 3000

services:
  reactive-resume:
    image: amruthpillai/reactive-resume:latest
    environment:
      - SERVICE_FQDN_REACTIVERESUME_3000
      - PUBLIC_URL=$SERVICE_FQDN_REACTIVERESUME
      - STORAGE_URL=http://minio
      - DATABASE_URL=postgresql://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgres:5432/${POSTGRES_DB:-postgres}
      - ACCESS_TOKEN_SECRET=$SERVICE_PASSWORD_ACCESSTOKEN
      - REFRESH_TOKEN_SECRET=$SERVICE_PASSWORD_REFRESHTOKEN
      - CHROME_TOKEN=$SERVICE_PASSWORD_CHROMETOKEN
      - CHROME_URL=ws://chrome:3000
      - REDIS_URL=redis://redis:6379
      - STORAGE_ENDPOINT=minio
      - STORAGE_PORT=9000
      - STORAGE_REGION=us-east-1
      - STORAGE_BUCKET=default
      - STORAGE_ACCESS_KEY=$SERVICE_USER_MINIO
      - STORAGE_SECRET_KEY=$SERVICE_PASSWORD_MINIO
      - STORAGE_USE_SSL=false
      - DISABLE_SIGNUPS=$SERVICE_DISABLE_SIGNUPS
      - DISABLE_EMAIL_AUTH=$SERVICE_DISABLE_EMAIL_AUTH
    depends_on:
      - postgres
      - minio
      - chrome
  postgres:
    image: postgres:16-alpine
    environment:
      - POSTGRES_DB=${POSTGRES_DB:-postgres}
      - POSTGRES_USER=$SERVICE_USER_POSTGRES
      - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 20s
      retries: 10

  minio:
    image: quay.io/minio/minio:latest
    command: server /data --console-address ":9001"
    environment:
      - MINIO_ROOT_USER=$SERVICE_USER_MINIO
      - MINIO_ROOT_PASSWORD=$SERVICE_PASSWORD_MINIO
    volumes:
      - minio-data:/data
    healthcheck:
      test: ["CMD", "mc", "ready", "local"]
      interval: 5s
      timeout: 20s
      retries: 10

  chrome:
    image: ghcr.io/browserless/chrome:latest
    environment:
      - HEALTH=true
      - TIMEOUT=10000
      - CONCURRENT=10
      - TOKEN=$SERVICE_PASSWORD_CHROMETOKEN

  redis:
    image: redis:alpine
    command: redis-server
    volumes:
      - redis_data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 20s
      retries: 10
