# Développement local / exécution sur la machine du propriétaire. PostgreSQL n'est PAS exposé hors de la machine (bind 127.0.0.1). # Production MacLustr : PostgreSQL 17 Homebrew sur M3U96b (localhost, scram-sha-256), app via PM2 — voir README. services: postgres: image: postgres:17-alpine environment: POSTGRES_DB: toveli POSTGRES_USER: toveli_app POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-toveli_dev} ports: ["127.0.0.1:5432:5432"] volumes: ["pgdata:/var/lib/postgresql/data"] healthcheck: { test: ["CMD-SHELL", "pg_isready -U toveli_app -d toveli"], interval: 5s, timeout: 3s, retries: 20 } app: build: . depends_on: { postgres: { condition: service_healthy } } env_file: [.env.local] environment: DATABASE_URL: postgresql://toveli_app:${POSTGRES_PASSWORD:-toveli_dev}@postgres:5432/toveli STORAGE_DIR: /app/data/media TOVELI_DB: /app/data/toveli.db PORT: "3000" ports: ["127.0.0.1:3000:3000"] volumes: ["./data:/app/data"] command: sh -c "pnpm db:migrate && pnpm start" worker: build: . depends_on: { postgres: { condition: service_healthy } } env_file: [.env.local] environment: DATABASE_URL: postgresql://toveli_app:${POSTGRES_PASSWORD:-toveli_dev}@postgres:5432/toveli STORAGE_DIR: /app/data/media TOVELI_DB: /app/data/toveli.db volumes: ["./data:/app/data"] command: sh -c "while true; do pnpm tsx scripts/jobs.ts; sleep 3600; done" volumes: { pgdata: {} }