# ============================================================================= # 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: - "7000:7000" 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: