services: companion: build: context: . dockerfile: docker/companion-tier1.Dockerfile image: gps-denied-onboard/companion:dev depends_on: db: condition: service_healthy mock-sat: condition: service_healthy environment: GPS_DENIED_FC_PROFILE: ardupilot_plane GPS_DENIED_TIER: "1" DB_URL: postgresql://gps_denied:dev@db:5432/gps_denied SATELLITE_PROVIDER_URL: http://mock-sat:5100 CAMERA_CALIBRATION_PATH: /fixtures/calibration/adti26.json LOG_LEVEL: DEBUG LOG_SINK: console INFERENCE_BACKEND: pytorch_fp16 FDR_PATH: /var/lib/gps-denied/fdr TILE_CACHE_PATH: /var/lib/gps-denied/tiles MAVLINK_SIGNING_KEY: /fixtures/mavlink_signing/dev_key volumes: - ./tests/fixtures:/fixtures:ro - fdr-data:/var/lib/gps-denied/fdr - tile-data:/var/lib/gps-denied/tiles healthcheck: test: ["CMD", "python3", "-m", "gps_denied_onboard.healthcheck"] interval: 10s timeout: 3s retries: 3 operator-orchestrator: build: context: . dockerfile: docker/operator-orchestrator.Dockerfile image: gps-denied-onboard/operator-orchestrator:dev depends_on: db: condition: service_healthy environment: GPS_DENIED_FC_PROFILE: ardupilot_plane GPS_DENIED_TIER: "1" DB_URL: postgresql://gps_denied:dev@db:5432/gps_denied SATELLITE_PROVIDER_URL: http://mock-sat:5100 CAMERA_CALIBRATION_PATH: /fixtures/calibration/adti26.json LOG_LEVEL: DEBUG LOG_SINK: console INFERENCE_BACKEND: pytorch_fp16 FDR_PATH: /var/lib/gps-denied/fdr TILE_CACHE_PATH: /var/lib/gps-denied/tiles MAVLINK_SIGNING_KEY: /fixtures/mavlink_signing/dev_key volumes: - ./tests/fixtures:/fixtures:ro - tile-data:/var/lib/gps-denied/tiles mock-sat: build: context: . dockerfile: docker/mock-suite-sat-service.Dockerfile image: gps-denied-onboard/mock-suite-sat-service:dev ports: - "5100:5100" healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:5100/healthz').read()"] interval: 5s timeout: 2s retries: 5 db: image: postgres:16-alpine environment: POSTGRES_USER: gps_denied POSTGRES_PASSWORD: dev POSTGRES_DB: gps_denied volumes: - db-data:/var/lib/postgresql/data - ./docker/db-init:/docker-entrypoint-initdb.d:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U gps_denied -d gps_denied"] interval: 5s timeout: 3s retries: 10 volumes: db-data: {} fdr-data: {} tile-data: {}