Port mappings for admin and backend services are updated to use alternative external ports (3001 and 8001) to avoid conflicts. Healthcheck arrays are also normalized to use double quotes consistently throughout the file.
103 lines
2.7 KiB
YAML
103 lines
2.7 KiB
YAML
# 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:
|