| version: "3.9" | |
| services: | |
| # ββ PostgreSQL ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| postgres: | |
| image: postgres:15-alpine | |
| container_name: bp_postgres | |
| restart: unless-stopped | |
| environment: | |
| POSTGRES_USER: bp_user | |
| POSTGRES_PASSWORD: bp_password | |
| POSTGRES_DB: bp_monitoring | |
| ports: | |
| - "5432:5432" | |
| volumes: | |
| - postgres_data:/var/lib/postgresql/data | |
| healthcheck: | |
| test: ["CMD-SHELL", "pg_isready -U bp_user -d bp_monitoring"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 5 | |
| # ββ RabbitMQ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| rabbitmq: | |
| image: rabbitmq:3.13-management-alpine | |
| container_name: bp_rabbitmq | |
| restart: unless-stopped | |
| environment: | |
| RABBITMQ_DEFAULT_USER: guest | |
| RABBITMQ_DEFAULT_PASS: guest | |
| ports: | |
| - "5672:5672" # AMQP | |
| - "15672:15672" # Management UI β http://localhost:15672 | |
| volumes: | |
| - rabbitmq_data:/var/lib/rabbitmq | |
| healthcheck: | |
| test: ["CMD", "rabbitmq-diagnostics", "ping"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 5 | |
| # ββ FastAPI (ETL #1) ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| api: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| container_name: bp_api | |
| restart: unless-stopped | |
| env_file: .env | |
| environment: | |
| DATABASE_URL: postgresql+asyncpg://bp_user:bp_password@postgres:5432/bp_monitoring | |
| RABBITMQ_URL: amqp://guest:guest@rabbitmq:5672/ | |
| ports: | |
| - "7860:7860" | |
| depends_on: | |
| postgres: | |
| condition: service_healthy | |
| rabbitmq: | |
| condition: service_healthy | |
| volumes: | |
| - ./models:/app/models # Mount model checkpoints | |
| volumes: | |
| postgres_data: | |
| rabbitmq_data: | |