# ============================================================================= # Imago — Production (images pré-buildées, stockage local) # ============================================================================= services: admin: image: docker-registry.dev.home:5000/imago-admin:latest ports: - "${ADMIN_PORT:-3001}:80" depends_on: - backend restart: unless-stopped backend: image: docker-registry.dev.home:5000/imago-backend:latest user: "1000:1000" ports: - "${BACKEND_PORT:-7000}:7000" env_file: - .env environment: DATABASE_URL: postgresql+asyncpg://imago:imago@db:5432/imago REDIS_URL: redis://redis:6379/0 STORAGE_BACKEND: ${STORAGE_BACKEND:-local} UPLOAD_DIR: ${UPLOAD_DIR:-/app/data/uploads} THUMBNAILS_DIR: ${THUMBNAILS_DIR:-/app/data/thumbnails} MAX_UPLOAD_SIZE_MB: ${MAX_UPLOAD_SIZE_MB:-50} SIGNED_URL_SECRET: ${SIGNED_URL_SECRET:-changez-moi-en-prod} JWT_SECRET_KEY: ${JWT_SECRET_KEY:-} ADMIN_API_KEY: ${ADMIN_API_KEY:-} volumes: - ${UPLOAD_VOLUME:-uploads}:/app/data/uploads - ${THUMBNAIL_VOLUME:-thumbnails}:/app/data/thumbnails depends_on: db: condition: service_healthy redis: condition: service_healthy restart: unless-stopped worker: image: docker-registry.dev.home:5000/imago-backend:latest user: "1000:1000" command: python worker.py environment: DATABASE_URL: postgresql+asyncpg://imago:imago@db:5432/imago REDIS_URL: redis://redis:6379/0 STORAGE_BACKEND: ${STORAGE_BACKEND:-local} UPLOAD_DIR: ${UPLOAD_DIR:-/app/data/uploads} THUMBNAILS_DIR: ${THUMBNAILS_DIR:-/app/data/thumbnails} MAX_UPLOAD_SIZE_MB: ${MAX_UPLOAD_SIZE_MB:-50} SIGNED_URL_SECRET: ${SIGNED_URL_SECRET:-changez-moi-en-prod} ADMIN_API_KEY: ${ADMIN_API_KEY:-} JWT_SECRET_KEY: ${JWT_SECRET_KEY:-} volumes: - ${UPLOAD_VOLUME:-uploads}:/app/data/uploads - ${THUMBNAIL_VOLUME:-thumbnails}:/app/data/thumbnails depends_on: db: condition: service_healthy redis: condition: service_healthy restart: unless-stopped db: image: postgres:16-alpine environment: POSTGRES_USER: imago POSTGRES_PASSWORD: imago POSTGRES_DB: imago volumes: - pgdata:/var/lib/postgresql/data - ${BACKUP_DIR:-./backups}:/backups healthcheck: test: ["CMD-SHELL", "pg_isready -U imago -d imago"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped redis: image: redis:7-alpine command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru volumes: - redisdata:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 3 restart: unless-stopped volumes: pgdata: redisdata: uploads: thumbnails: