FROM python:3.12-slim AS test WORKDIR /app COPY requirements.txt . RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt pytest COPY virtual_drone ./virtual_drone COPY monitoring ./monitoring COPY explorer ./explorer COPY tests ./tests RUN pytest tests/ -q FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt COPY virtual_drone ./virtual_drone # Monitoring and explorer ship in the same image so Kubernetes can run # them without bind mounts (Compose overrides these with live mounts) COPY monitoring ./monitoring COPY explorer ./explorer ENV DATA_DIR=/data CMD ["python", "-m", "virtual_drone.main"]