services: postgres: image: postgres:18-alpine environment: POSTGRES_USER: imap POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: imapcopier volumes: - pgdata:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -U imap"] interval: 5s timeout: 3s retries: 5 app: build: . environment: DATABASE_URL: postgres://imap:${POSTGRES_PASSWORD}@postgres:5432/imapcopier?sslmode=disable AUTH_USER: ${AUTH_USER} AUTH_PASS: ${AUTH_PASS} ENC_KEY: ${ENC_KEY} SESSION_SECRET: ${SESSION_SECRET} WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-4} depends_on: postgres: condition: service_healthy caddy: image: caddy:2-alpine ports: - "${HTTP_PORT:-80}:80" - "443:443" environment: DOMAIN: ${DOMAIN:-} ACME_EMAIL: ${ACME_EMAIL:-} volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config depends_on: - app volumes: pgdata: caddy_data: caddy_config: