Files
Imago/docker-compose/docker-compose.yml
T
bruno a626ab4981
CI / Lint & Format (push) Failing after 20s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 9s
CI / Docker Build (push) Has been skipped
refactor: structure docker-compose/ + scripts deploy.sh et setup.sh
2026-06-23 22:17:26 -04:00

118 lines
3.5 KiB
YAML

# =============================================================================
# Imago — Développement local (build from source, stack complet)
# =============================================================================
# Usage:
# docker compose -f docker-compose/docker-compose.yml up -d
#
# Ce compose build les images depuis le code source et démarre tous les
# services nécessaires : PostgreSQL, Redis, MinIO (S3), API, Worker.
# =============================================================================
services:
# ── Base de données ───────────────────────────────────────
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: imago
POSTGRES_PASSWORD: imago
POSTGRES_DB: imago
ports:
- "5432:5432"
volumes:
- pgdata_dev:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U imago -d imago"]
interval: 5s
timeout: 5s
retries: 5
# ── Redis ─────────────────────────────────────────────────
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redisdata_dev:/data
command: redis-server --appendonly yes
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
# ── MinIO (stockage S3 local) ─────────────────────────────
minio:
image: minio/minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000"
- "9001:9001"
volumes:
- miniodata_dev:/data
# ── API Backend ───────────────────────────────────────────
backend:
build:
context: ..
dockerfile: Dockerfile
ports:
- "8000:8000"
env_file:
- ../.env
environment:
DATABASE_URL: postgresql+asyncpg://imago:imago@db: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
volumes:
- uploads_dev:/app/data/uploads
- thumbnails_dev:/app/data/thumbnails
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
restart: unless-stopped
# ── ARQ Worker ────────────────────────────────────────────
worker:
build:
context: ..
dockerfile: Dockerfile
command: python worker.py
env_file:
- ../.env
environment:
DATABASE_URL: postgresql+asyncpg://imago:imago@db:5432/imago
REDIS_URL: redis://redis:6379/0
STORAGE_BACKEND: s3
S3_BUCKET: imago
S3_ENDPOINT_URL: http://minio:9000
S3_ACCESS_KEY: minioadmin
S3_SECRET_KEY: minioadmin
S3_REGION: us-east-1
volumes:
- uploads_dev:/app/data/uploads
- thumbnails_dev:/app/data/thumbnails
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
restart: unless-stopped
volumes:
pgdata_dev:
redisdata_dev:
miniodata_dev:
uploads_dev:
thumbnails_dev: