version: '3.8' services: backend: build: context: . dockerfile: Dockerfile.backend ports: - "8000:8000" environment: - MODEL_PATH=models/best_lstm_model.pth - MODEL_TYPE=lstm - CORRECTION_WEIGHT=0.3 - PORT=8000 volumes: - ./models:/app/models:ro - ./data:/app/data:ro healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 restart: unless-stopped frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "3000:3000" environment: - NEXT_PUBLIC_API_URL=http://backend:8000 - NEXT_PUBLIC_MAPBOX_TOKEN=${MAPBOX_TOKEN} depends_on: - backend restart: unless-stopped nginx: image: nginx:alpine ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - frontend - backend restart: unless-stopped networks: default: driver: bridge