chore: remove the Docker image and its CI job (#344)
## Summary
Deletes the Docker image and everything that existed to build it. The image has never worked on any architecture, and nothing in the repository or its release process consumes it. The maintainer's decision was to remove rather than repair, so this PR does not attempt to fix the glibc mismatch or the missing runtime libraries recorded in #342.
**Container deployment is no longer supported.** Anyone who was building the image locally has the release binaries, the Homebrew tap, the Debian package and Ubuntu PPA, `cargo install all-smi`, and `all-smi service` for running API mode supervised under systemd, launchd, or the Windows SCM. All of those work today and are exercised by CI, which the image never was.
## What changed
Removed:
- `Dockerfile`
- `examples/docker-compose.yml`
- `tests/docker_build_context_test.rs`
- The `docker-check` job in `.github/workflows/ci.yml`, together with the 57 line cost-analysis comment header written for it (lines 1108-1184, leaving the file at 1107 lines)
- The `docker-build-container` target in `Makefile`
Documentation:
- `DEVELOPERS.md`: removed the `docker build -t all-smi:latest .` instruction, the `Docker Check` CI bullet, and the `Docker images` release bullet. Kept the `make docker-dev` / `docker-test-container-api` / `docker-test-container-view` documentation, with a note clarifying that those targets run all-smi inside a stock `rust:1.88` image to exercise container awareness and do not build a project image.
- `README.md`: added a short note at the end of the Installation section. The section lists six install options and previously said nothing about containers, so a reader expecting a seventh was left to infer its absence.
## Deleting the test was deliberate
`tests/docker_build_context_test.rs` is not collateral damage. PR #322 added it a day earlier specifically to guard the Docker build context after #309 broke `main`. With no `Dockerfile` it has no subject, and it would fail outright rather than pass vacuously: two of its seven tests do `.expect("Dockerfile must exist")`. It has to go in the same commit as the `Dockerfile`, and it is called out here so the loss of that guard is visible rather than quietly absorbed.
## Two documentation defects of different kinds
Worth distinguishing, because only one of them is caused by this PR:
- `DEVELOPERS.md` line 408, `3. **Docker Check**: Validates Docker image build`, described a job that this PR deletes. **Invalidated by this change.**
- `DEVELOPERS.md` line 419 listed `Docker images` among the things a release publishes. **This was already false before this change**, and has been for as long as the line existed: no workflow has ever published an image. There is no `docker/login-action`, no `docker push`, and no `ghcr.io` reference anywhere under `.github/`. Removing it corrects a claim that was never true, rather than one this PR made untrue.
Neither removal required renumbering: line 408 was the last item of a three-item ordered list, and line 419 was a bullet in an unordered sub-list.
**Flagged but deliberately not fixed:** that same `DEVELOPERS.md` CI section names three jobs when `ci.yml` actually has seven (`packaging-sync`, `systemd-service`, `launchd-service`, and `windows-service` are all missing). That staleness predates this PR and fixing it is scope creep, so it is left for a docs pass.
## Survey notes worth recording
Three findings from the consumption sweep, all of which strengthen the case that nothing ever used this:
- **`examples/docker-compose.yml` set `HOST_PROC_PATH: /host/proc`, and the binary never reads that variable.** It appears nowhere else in the tree. `src/device/container_utils.rs:147-153` locates the host procfs by probing a hardcoded list (`/host/proc`, `/hostproc`, `/proc_host`) instead. An example configuring a knob that does not exist is hard to square with anyone having run it.
- **No `.dockerignore` was ever tracked.** `.gitignore:69` carries a blanket `.*` rule, so any local copy was silently never committed, and CI checks out from git. Every `docker-check` run therefore built with no exclusions at all, sending `target/` and `.git/` into the build context. Nothing to delete here, since it was never in the repository.
- **The `docker-build-container` Makefile target was dead, not merely undocumented.** It was the only `docker build` of this repository anywhere in the tree, added in `f3745e2` (#31) and never referenced since: absent from both `.PHONY` and `make help`, invoked by no script, workflow, or document. `DEVELOPERS.md` documented the raw `docker build` command rather than the target, so even the documentation did not know it existed.
## Explicitly untouched
- **Container-awareness code under `src/`**: `/.dockerenv` probing, cgroup parsing, `ContainerRuntime::Docker`, and Docker-aware disk filtering. all-smi detecting that it is *running inside* a container is a product feature with nothing to do with shipping an image.
- **The container test harness**: the shell scripts under `tests/` and the three `docker-dev` Makefile targets, which run all-smi inside stock `rust:1.88` containers to exercise that feature. None of them built this repository's image.
- **History**: the `README.md` and `debian/changelog` changelog lines and the `TECHNICAL_REPORTS/` entries for #322 and #339 record what happened and remain true.
## Test plan
- [x] `actionlint .github/workflows/ci.yml` reports the same 5 pre-existing findings as before the change, with no new ones (baseline captured before editing)
- [x] PyYAML parse of `ci.yml` succeeds; jobs are now `test`, `packaging-sync`, `systemd-service`, `launchd-service`, `windows-service`, `build-check`; `docker-check` is absent and every remaining `needs:` target resolves to an existing job
- [x] No job referenced `docker-check` even before removal, so the graph needed no repair: the string appeared only on lines 1124 and 1131 inside its own comment header and on line 1166 as the job key
- [x] `main` is not branch-protected (`gh api .../branches/main/protection` returns 404), so no required status check names `Docker Build Check`
- [x] All 19 integration test targets pass, run individually
- [x] 1363 library unit tests pass
- [x] `cargo fmt --check`
- [x] `cargo clippy --lib --tests -- -D warnings`
- [x] `cargo clippy --bin all-smi -- -D warnings`
- [x] No dangling references to `Dockerfile`, `docker-check`, `docker-build-container`, `docker_build_context_test`, or `docker-compose` remain outside `TECHNICAL_REPORTS/`, `debian/changelog`, and the `README.md` changelog
## Ordering
Depends on #341 only in narrative, not in content: #341 touches `Cargo.toml` and `Cargo.lock`, this PR touches none of those, so the two do not conflict. #341 removed the vendored OpenSSL dependency on its own merit, since it made every release compile OpenSSL from source three times.
Closes #342 J
Jeongkyu Shin committed
dd17ebd3e439f9b66e0afb9040966b074650cec0
Parent: 59b3c9c
Committed by GitHub <noreply@github.com>
on 8/6/2026, 11:55:18 PM