2026-04-30 21:06:35 -04:00

74 lines
2.1 KiB
YAML

services:
postgres:
image: postgres:latest
restart: unless-stopped
container_name: reactive-resume-postgres
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
networks:
- internal-resume-net
volumes:
- /mnt/appdata/reactive-resume/postgres:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 10
printer:
image: ghcr.io/browserless/chromium:latest
restart: unless-stopped
container_name: reactive-resume-printer
networks:
- internal-resume-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
container_name: reactive-resume
networks:
- proxy-net
- internal-resume-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
internal-resume-net:
driver: bridge