services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: mailcom_api POSTGRES_USER: mailcom_api POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD} volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U mailcom_api -d mailcom_api"] interval: 5s timeout: 3s retries: 20 mailcom-api: build: . restart: unless-stopped depends_on: postgres: condition: service_healthy environment: MAILCOM_ADDRESS: :8000 MAILCOM_API_KEY: ${MAILCOM_API_KEY:?set MAILCOM_API_KEY} MAILCOM_MASTER_KEY: ${MAILCOM_MASTER_KEY:?set MAILCOM_MASTER_KEY} MAILCOM_DATABASE_URL: postgres://mailcom_api:${POSTGRES_PASSWORD}@postgres:5432/mailcom_api?sslmode=disable MAILCOM_UPSTREAM_TIMEOUT: ${MAILCOM_UPSTREAM_TIMEOUT:-30} MAILCOM_UPSTREAM_RPS: ${MAILCOM_UPSTREAM_RPS:-20} MAILCOM_UPSTREAM_BURST: ${MAILCOM_UPSTREAM_BURST:-10} MAILCOM_UPSTREAM_CONCURRENCY: ${MAILCOM_UPSTREAM_CONCURRENCY:-12} MAILCOM_SESSION_TTL: ${MAILCOM_SESSION_TTL:-1800} MAILCOM_POLL_INTERVAL: ${MAILCOM_POLL_INTERVAL:-10} MAILCOM_JOB_IDLE_TIMEOUT: ${MAILCOM_JOB_IDLE_TIMEOUT:-60} MAILCOM_JOB_WORKERS: ${MAILCOM_JOB_WORKERS:-100} MAILCOM_RETENTION_INTERVAL: ${MAILCOM_RETENTION_INTERVAL:-300} MAILCOM_UPSTREAM_PROXY: ${MAILCOM_UPSTREAM_PROXY:-} ports: - "127.0.0.1:8000:8000" read_only: true tmpfs: - /tmp:size=16m,mode=1777 security_opt: - no-new-privileges:true volumes: postgres-data: