services: # --- TERRA-VIEW UI/ORCHESTRATOR (PRODUCTION) --- # Serves HTML, proxies to SFM and SLMM backends terra-view-prod: build: context: . dockerfile: Dockerfile.terraview container_name: terra-view network_mode: host volumes: - ./data:/app/data environment: - PYTHONUNBUFFERED=1 - ENVIRONMENT=production - PORT=8001 - SFM_API_URL=http://localhost:8002 # New: Points to SFM container - SLMM_API_URL=http://localhost:8100 # Points to SLMM container restart: unless-stopped depends_on: - sfm - slmm command: python3 -m app.main # Runs full Terra-View (UI + orchestration) healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8001/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # --- TERRA-VIEW UI/ORCHESTRATOR (DEVELOPMENT) --- terra-view-dev: build: context: . dockerfile: Dockerfile.terraview container_name: terra-view-dev network_mode: host volumes: - ./data-dev:/app/data environment: - PYTHONUNBUFFERED=1 - ENVIRONMENT=development - PORT=1001 - SFM_API_URL=http://localhost:8002 - SLMM_API_URL=http://localhost:8100 restart: unless-stopped depends_on: - sfm - slmm profiles: - dev command: python3 -m app.main healthcheck: test: ["CMD", "curl", "-f", "http://localhost:1001/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # --- SFM - SEISMOGRAPH FLEET MODULE (BACKEND API) --- # Eventually will be API-only, but for now runs same code as Terra-View sfm: build: context: . dockerfile: Dockerfile.sfm container_name: sfm network_mode: host volumes: - ./data:/app/data environment: - PYTHONUNBUFFERED=1 - ENVIRONMENT=production - PORT=8002 # Different port from Terra-View - MODULE_MODE=sfm # Future: Tells app to run SFM-only mode restart: unless-stopped command: python3 -m app.main # For now: Same entry point, different port healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8002/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # --- SLMM (Sound Level Meter Manager) --- slmm: build: context: . dockerfile: Dockerfile.slm container_name: slmm network_mode: host volumes: - ./data-slm:/app/data environment: - PYTHONUNBUFFERED=1 - PORT=8100 - CORS_ORIGINS=* restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8100/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s volumes: data: data-dev: data-slm: