services: backend: build: ./backend container_name: track2stem-backend ports: - "8080:8080" volumes: - uploads:/app/uploads - outputs:/app/outputs environment: - PROCESSOR_URL=http://processor:5000 - PORT=8080 depends_on: processor: condition: service_healthy healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080/api/health"] interval: 10s timeout: 5s retries: 5 start_period: 10s networks: - track2stem-network frontend: build: ./frontend container_name: track2stem-frontend ports: - "3000:80" depends_on: backend: condition: service_healthy healthcheck: test: ["CMD", "curl", "-sf", "http://localhost:80/"] interval: 10s timeout: 5s retries: 5 start_period: 10s networks: - track2stem-network processor: build: ./processor container_name: track2stem-processor volumes: - uploads:/app/uploads - outputs:/app/outputs environment: - PORT=5000 - FLASK_DEBUG=true healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:5000/health')"] interval: 10s timeout: 5s retries: 5 start_period: 30s networks: - track2stem-network volumes: uploads: outputs: networks: track2stem-network: driver: bridge