# Imago — Docker Compose Production # Usage: docker compose -f docker-compose.production.yml up -d services: # ── Admin Panel (React + Nginx) ─────────────────────────── admin: image: docker-registry.dev.home:5000/imago-admin:latest ports: - "3001:80" depends_on: - backend restart: unless-stopped # ── API Backend ──────────────────────────────────────────── backend: image: docker-registry.dev.home:5000/imago-backend:latest ports: - "8001:8000" env_file: .env.production environment: REDIS_URL: redis://redis:6379/0 DATABASE_URL: postgresql+asyncpg://imago:imago@db:5432/imago STORAGE_BACKEND: s3 S3_ENDPOINT_URL: http://minio:9000 S3_BUCKET: imago S3_ACCESS_KEY: minioadmin S3_SECRET_KEY: minioadmin S3_REGION: us-east-1 volumes: - uploads:/app/data/uploads - 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 command: python worker.py env_file: .env.production environment: REDIS_URL: redis://redis:6379/0 DATABASE_URL: postgresql+asyncpg://imago:imago@db:5432/imago STORAGE_BACKEND: s3 S3_ENDPOINT_URL: http://minio:9000 S3_BUCKET: imago S3_ACCESS_KEY: minioadmin S3_SECRET_KEY: minioadmin S3_REGION: us-east-1 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 - ./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 minio: image: minio/minio command: server /data --console-address ':9001' environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin volumes: - miniodata:/data restart: unless-stopped volumes: pgdata: redisdata: miniodata: uploads: thumbnails: