services: # PostgreSQL - Primary Database # Limit: 256MB RAM. Sufficient for local dev schemas. postgres: image: postgres:16-alpine container_name: veza_postgres restart: unless-stopped environment: POSTGRES_USER: veza POSTGRES_PASSWORD: password POSTGRES_DB: veza ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: [ "CMD-SHELL", "pg_isready -U veza" ] interval: 5s timeout: 5s retries: 5 deploy: resources: limits: cpus: '0.50' memory: 256M reservations: memory: 128M # Redis - Cache & PubSub # Limit: 64MB RAM. redis: image: redis:7-alpine container_name: veza_redis restart: unless-stopped ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 5s timeout: 3s retries: 5 deploy: resources: limits: cpus: '0.25' memory: 64M reservations: memory: 32M # RabbitMQ - Message Broker # Limit: 256MB RAM. Uses Erlang, can be memory hungry. Alpine helps. rabbitmq: image: rabbitmq:3-management-alpine container_name: veza_rabbitmq restart: unless-stopped environment: RABBITMQ_DEFAULT_USER: veza RABBITMQ_DEFAULT_PASS: password ports: - "5672:5672" # AMQP - "15672:15672" # Management UI volumes: - rabbitmq_data:/var/lib/rabbitmq healthcheck: test: rabbitmq-diagnostics -q ping interval: 10s timeout: 10s retries: 5 deploy: resources: limits: cpus: '0.50' memory: 512M reservations: memory: 256M # Backend API (si nécessaire pour développement local) # Décommenter et configurer selon vos besoins backend-api: build: context: ./veza-backend-api container_name: veza_backend_dev environment: - APP_ENV=development - DATABASE_URL=postgresql://veza:password@postgres:5432/veza?sslmode=disable - REDIS_URL=redis://redis:6379 - JWT_SECRET=dev-secret-key-minimum-32-characters-long - COOKIE_SECURE=false # false en dev local - COOKIE_SAME_SITE=lax # lax pour permettre localhost - COOKIE_DOMAIN= - COOKIE_HTTP_ONLY=true - COOKIE_PATH=/ - CORS_ALLOWED_ORIGINS=http://localhost:3000,http://localhost:5173 - RABBITMQ_URL=amqp://veza:password@rabbitmq:5672/ ports: - "8080:8080" depends_on: postgres: condition: service_healthy redis: condition: service_healthy healthcheck: # Ajout d'une healthcheck pour le backend API test: ["CMD", "curl", "-f", "http://localhost:8080/api/v1/health"] # Assurez-vous que cet endpoint existe interval: 10s timeout: 5s retries: 5 volumes: postgres_data: redis_data: rabbitmq_data: