85 lines
1.9 KiB
YAML
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:
|