# Blackbox / SITL compose stack: autopilot + ArduPilot SITL + mock detections +
# replay RTSP source. Drives the workspace e2e tests under tests/e2e/.
#
# The real SITL conformance gate (AC-5) requires images that are still being
# built out in per-component tasks; today's stack is a wired skeleton so
# `docker compose -f docker-compose.test.yml config` validates and downstream
# tasks (AZ-641 mavlink_transport, AZ-648 mission_executor) can plug in.
#
# Reference: _docs/02_document/deployment/ci_cd_pipeline.md §5.

services:
  autopilot:
    build:
      context: .
      dockerfile: Dockerfile
    image: azaion/autopilot:test
    environment:
      AUTOPILOT_CONFIG: /etc/azaion/autopilot/config.toml
      RUST_LOG: info
      AUTOPILOT_HEALTH_BIND: 0.0.0.0:8080
    volumes:
      - ./config/autopilot.staging.toml:/etc/azaion/autopilot/config.toml:ro
      - autopilot-state-test:/var/lib/autopilot
    depends_on:
      - ardupilot-sitl
      - mock-detections
      - mock-missions
      - replay-rtsp
    ports:
      - "8080:8080"

  ardupilot-sitl:
    image: ardupilot/sitl:latest
    # Placeholder. SITL conformance test (AZ-641, AZ-648, AZ-652) wires real
    # mission scripts. The image is pinned in those tasks.
    ports:
      - "14550:14550/udp"

  mock-detections:
    image: nginx:alpine
    # Replaced by deterministic detections fixture service in AZ-661.
    ports:
      - "50051:80"

  mock-missions:
    image: nginx:alpine
    # Replaced by mock missions HTTPS service in AZ-644.
    ports:
      - "8443:80"

  replay-rtsp:
    image: nginx:alpine
    # Replaced by an `mediamtx` / `ffmpeg`-driven looper in AZ-657.
    ports:
      - "8554:80"

volumes:
  autopilot-state-test: {}
