version: "3.8" services: postgres: image: postgres:15-alpine container_name: orquestrador_postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: orquestrador ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: orquestrador_redis ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 app: build: . container_name: orquestrador_app ports: - "8000:8080" environment: GOOGLE_PROJECT_ID: ${GOOGLE_PROJECT_ID} GOOGLE_LOCATION: ${GOOGLE_LOCATION:-us-central1} DB_HOST: postgres DB_PORT: 5432 DB_USER: postgres DB_PASSWORD: postgres DB_NAME: orquestrador MOCKAROO_API_KEY: ${MOCKAROO_API_KEY} MOCKAROO_BASE_URL: ${MOCKAROO_BASE_URL:-https://my.api.mockaroo.com} USE_MOCKAROO_WRITES: ${USE_MOCKAROO_WRITES:-false} CONVERSATION_STATE_BACKEND: ${CONVERSATION_STATE_BACKEND:-redis} CONVERSATION_STATE_TTL_MINUTES: ${CONVERSATION_STATE_TTL_MINUTES:-60} REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} REDIS_KEY_PREFIX: ${REDIS_KEY_PREFIX:-orquestrador} REDIS_SOCKET_TIMEOUT_SECONDS: ${REDIS_SOCKET_TIMEOUT_SECONDS:-5} depends_on: postgres: condition: service_healthy redis: condition: service_healthy volumes: - .:/app command: uvicorn app.main:app --host 0.0.0.0 --port 8080 --reload volumes: postgres_data: