services: postgres: image: postgres:latest restart: unless-stopped environment: POSTGRES_DB: postgres POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres networks: - proxy-net volumes: - /mnt/appdata/reactive-resume/postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"] interval: 10s timeout: 5s retries: 10 printer: image: ghcr.io/browserless/chromium:latest restart: unless-stopped networks: - proxy-net ports: - "4000:3000" environment: - HEALTH=true - CONCURRENT=20 - QUEUED=10 - TOKEN=${BROWSERLESS_TOKEN} healthcheck: test: ["CMD-SHELL", 'curl -fsS "http://localhost:3000/pressure?token=${BROWSERLESS_TOKEN}" > /dev/null'] interval: 10s timeout: 5s retries: 10 reactive-resume: image: amruthpillai/reactive-resume:latest # image: ghcr.io/amruthpillai/reactive-resume:latest restart: unless-stopped networks: - proxy-net env_file: - .env volumes: # Used when S3 is not configured; keeps uploads persistent - /mnt/appdata/reactive-resume/data:/app/data depends_on: postgres: condition: service_healthy printer: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"] interval: 30s timeout: 10s retries: 3 labels: - "traefik.enable=true" - "traefik.http.routers.reactive-resume.entrypoints=websecure" - "traefik.http.routers.reactive-resume.rule=Host(`resume.castaldifamily.com`)" - "traefik.http.routers.reactive-resume.tls=true" - "traefik.http.routers.reactive-resume.tls.certresolver=cloudflare" - "traefik.http.services.reactive-resume.loadbalancer.server.port=3000" networks: proxy-net: external: true