version: '3.8' services: api: build: . ports: - "8000:8000" environment: - DATABASE_URL=postgresql://postgres:postgres@db:5432/atm_anomaly - REDIS_URL=redis://redis:6379/0 - MODEL_PATH=models/checkpoints/best.pt - LOG_LEVEL=info volumes: - ./data:/app/data - ./models:/app/models - ./output:/app/output - ./logs:/app/logs depends_on: - db - redis restart: unless-stopped networks: - atm-network db: image: postgres:15-alpine environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=atm_anomaly volumes: - postgres_data:/var/lib/postgresql/data - ./config/database.sql:/docker-entrypoint-initdb.d/01-schema.sql ports: - "5432:5432" networks: - atm-network redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data networks: - atm-network dashboard: build: context: . dockerfile: Dockerfile.dashboard ports: - "3000:3000" environment: - API_URL=http://api:8000 depends_on: - api networks: - atm-network nginx: image: nginx:alpine ports: - "80:80" - "443:443" volumes: - ./config/nginx.conf:/etc/nginx/nginx.conf - ./src/dashboard:/usr/share/nginx/html/dashboard depends_on: - api - dashboard networks: - atm-network volumes: postgres_data: redis_data: networks: atm-network: driver: bridge