lennartondocker/hardad

By lennartondocker

Updated 3 months ago

Hardened Swedish-tutor app - Docker supply-chain security demo. DHI base, signed, attested with SBOM

Image
Languages & frameworks
Integration & delivery
Machine learning & AI
0

1.0K

lennartondocker/hardad repository overview

hardad — Swedish tutor on Docker Hardened Images

A conversational Swedish tutor (FastAPI + Anthropic Claude) built as a portfolio demo of the full Docker supply-chain stack. The app is the vehicle — the interesting part is everything attached to the image: build-time SBOM, SLSA v0.2 provenance, and a cosign keyless signature recorded in Sigstore's Rekor transparency log.

Demo image, not production. Live at lenie.selfhost.eu/docker_demo (invite). Source + full write-up: github.com/LennartOnGit/hardad.

What's in the image

LayerDetail
Basedhi.io/python:3.13 — Docker Hardened Image, distroless, runs as nonroot
AppFastAPI + Anthropic Claude Swedish tutor
SBOMSPDX 2.3, built by BuildKit, attached as in-toto attestation
ProvenanceSLSA v0.2, mode=max — full build graph incl. base digest
Signaturecosign keyless under GitHub OIDC, logged in Rekor
Platformslinux/amd64, linux/arm64

Hardened vs baseline

Same app, same Python closure, only the base changed:

Metricpython:3.13-slimdhi.io/python:3.13Δ
Image size89 MB44 MB−51%
Total packages16791−46%
Debian packages12243−65%
Total CVEs2316−30%

The hardened scan additionally surfaces 1 Critical + 1 High against CPython 3.13.13 that don't map to the baseline's unindexed Python binaries. DHI's 7-day patch SLA gives those a contractual resolution window.

Tags

TagMeaning
hardenedRolling — latest main build
hardened-<git-sha>Immutable per-commit

Verifying

cosign verify \
  --certificate-identity-regexp 'https://github\.com/LennartOnGit/hardad/\.github/workflows/docker-ci\.yml@.*' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  lennartondocker/hardad:hardened

docker buildx imagetools inspect lennartondocker/hardad:hardened --format '{{ json .SBOM }}'
docker buildx imagetools inspect lennartondocker/hardad:hardened --format '{{ json .Provenance }}'

Running

This image is part of a larger stack (Postgres, secrets, reverse proxy) — it won't do anything useful alone. See the GitHub repo for the Helm chart and local-dev instructions.

Inspection only:

docker pull lennartondocker/hardad:hardened
docker scout cves lennartondocker/hardad:hardened
docker scout sbom --format spdx lennartondocker/hardad:hardened

License

Apache 2.0.

Tag summary

Content type

Image

Digest

sha256:422ed4524

Size

254 Bytes

Last updated

3 months ago

docker pull lennartondocker/hardad:sha256-82841841812bfee8985f45dc21eff3da6ed557d8704f5756ff5d99e000b1c806.sig