Files
Imago/docker-compose.yml
T

85 lines
1.9 KiB
YAML

version: '3.9'
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: imago
POSTGRES_PASSWORD: imago
POSTGRES_DB: imago
ports:
- '5432:5432'
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U imago']
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
ports:
- '6379:6379'
volumes:
- redisdata:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 5s
retries: 5
minio:
image: minio/minio:latest
command: server /data --console-address ':9001'
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- '9000:9000'
- '9001:9001'
volumes:
- miniodata:/data
healthcheck:
test: ['CMD', 'mc', 'ready', 'local']
interval: 5s
timeout: 5s
retries: 5
api:
build: .
ports:
- '8000:8000'
environment:
- DATABASE_URL=postgresql+asyncpg://imago:imago@postgres:5432/imago
- REDIS_URL=redis://redis:6379/0
- STORAGE_BACKEND=s3
- S3_BUCKET=imago
- S3_ENDPOINT_URL=http://minio:9000
- S3_ENDPOINT_PUBLIC=http://localhost:9000
- S3_ACCESS_KEY=minioadmin
- S3_SECRET_KEY=minioadmin
- S3_REGION=us-east-1
- SIGNED_URL_SECRET=dev-secret-change-in-prod
- SECRET_KEY=dev-secret-change-in-prod
- TESSERACT_CMD=/usr/bin/tesseract
- GEMINI_API_KEY=${GEMINI_API_KEY:-}
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY:-}
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
minio:
condition: service_healthy
volumes:
- uploads:/app/data/uploads
- thumbnails:/app/data/thumbnails
volumes:
pgdata:
redisdata:
miniodata:
uploads:
thumbnails: