Use this page when python -B scripts/dev.py docker-runtime fails on a Docker-enabled machine. Read it with docs/docker_runtime_evidence_checklist.md, docs/container_release_hygiene.md, and docs/command_output_troubleshooting_map.md.
Docker runtime verification is optional and environment-dependent. The default verified demo path remains local Python, and python -B scripts/dev.py quality must not require Docker.
- Run
python -B scripts/dev.py container-releasebefore debugging runtime behavior. - Run
python -B scripts/dev.py docker-runtimeonly on a Docker-enabled machine. - Do not claim Docker runtime proof until the runtime command passes on the machine collecting evidence.
- Do not commit generated container logs, Docker Desktop diagnostics,
.envfiles, registry credentials, local runtime state, machine-specific dumps, or screenshots that do not match current running services. - Do not weaken permission checks, approval gates, smoke flows, health checks, ports, or build-context ignores to make Docker pass.
Symptom:
Docker runtime check failed: Docker CLI, Docker Compose, or Docker daemon is unavailable
Meaning:
- Docker Desktop or Docker Engine is not running
- the user is on a machine where Docker is not installed
- the shell cannot reach the Docker daemon
Safe next step:
python -B scripts/dev.py container-releaseKeep public wording limited to static container hygiene until Docker is available. Do not edit app code, smoke tests, or Dockerfiles just because the local machine cannot reach Docker.
Reviewer comment:
This machine cannot collect Docker runtime evidence yet. The static container release gate is still useful, but please keep runtime verification unclaimed until `python -B scripts/dev.py docker-runtime` passes on a Docker-enabled machine.
Symptom:
docker compose config fails, or the service command in docker-compose.yml differs from the Dockerfile command.
Meaning:
- Compose command, Dockerfile
CMD, exposed port, or health check drifted - a service may start locally but fail in the container path
- optional model environment defaults may have changed unexpectedly
Safe next step:
python -B scripts/dev.py container-release
git diff -- docker-compose.yml */DockerfileFix the static config first, then rerun:
python -B scripts/dev.py container-releaseDo not run broader runtime claims until the static gate passes.
Reviewer comment:
The Docker runtime failure starts with static config drift. Please fix the Compose/Dockerfile/health-check mismatch and rerun `python -B scripts/dev.py container-release` before collecting runtime evidence.
Symptom:
One of the containerized /api/health endpoints does not become healthy.
Meaning:
- the service failed during container startup
- the container command, port, working directory, or seed data path is wrong
- a runtime error appears only in the container environment
Safe next step:
python -B scripts/dev.py container-release
python -B scripts/dev.py qualityOn the Docker-enabled machine, inspect only the relevant Compose service logs. Redact local paths, machine identifiers, environment values, and tokens before sharing any excerpt.
Reviewer comment:
The runtime proof should stay blocked until all three container health endpoints pass. Please keep the local Python path verified with `quality`, inspect the failing service log locally, and avoid committing generated logs or environment dumps.
Symptom:
A PR adds copied Compose logs, Docker Desktop diagnostics, runtime_state files, or old `out/` artifacts as evidence.
Meaning:
- generated local evidence is being treated as source
- logs can expose paths, hostnames, environment values, trace IDs, or stale runtime behavior
- review cannot tell whether the evidence matches the current commit
Safe next step:
git status --short --branch
git diff --stat
python -B scripts/dev.py safetyRemove generated logs and rely on the command result instead. Release evidence should be added only through a deliberate release process.
Reviewer comment:
Please remove generated Docker logs and stale runtime artifacts from the source diff. The safe evidence path is the command result from `python -B scripts/dev.py docker-runtime` on a Docker-enabled machine, plus the static `container-release` gate.
Symptom:
host port(s) already in use: 8765, 8770, or 8780
Meaning:
- local demo servers are already running
- another process owns the public demo ports
- the runtime proof refuses to hide port conflicts by changing verified ports
Safe next step:
git status --short --branch
python -B scripts/dev.py container-releaseStop the conflicting local service, then rerun on the Docker-enabled machine:
python -B scripts/dev.py docker-runtimeDo not change Compose ports only to bypass a local conflict. Port changes must be reviewed with README, API docs, screenshots, and container-release.
Reviewer comment:
This looks like a local port conflict, not an app change. Please stop the process using the demo ports and rerun `python -B scripts/dev.py docker-runtime`; do not change the published ports just to make the local machine pass.
Before approving Docker-facing docs or config changes:
git diff --stat
git diff -- docker-compose.yml */Dockerfile */.dockerignore README.md PROJECT_CONTENT_INDEX.md docs/ scripts/
git diff --check
python -B scripts/dev.py container-release
python -B scripts/dev.py safety
python -B scripts/dev.py qualityRun python -B scripts/dev.py docker-runtime only on a Docker-enabled machine. If it is not run, say so plainly and keep Docker runtime verification optional, manual, and unclaimed.
Good when Docker runtime was not run:
Docker packaging is statically checked by `python -B scripts/dev.py container-release`; runtime verification remains optional and should be collected with `python -B scripts/dev.py docker-runtime` on a Docker-enabled machine.
Good after runtime proof passes:
Docker runtime verification passed on this commit with `python -B scripts/dev.py docker-runtime`: Compose built and started all services, health checks passed, smoke flows passed, and the stack was torn down.
Avoid:
Docker runtime is verified because the static container release gate passed.