Skip to content

Hardened Docker image, changelog, and 0.2.1 - #2

Merged
fullstackspectrum merged 2 commits into
mainfrom
hardened-image
Nov 3, 2026
Merged

fullstackspectrum merged 2 commits into
mainfrom
hardened-image

Conversation

@fullstackspectrum

Copy link
Copy Markdown
Owner

Summary

Rebuilds the Docker image on Docker Hardened Images to clear the vulnerabilities reported against fullstackspectrum/gitpulse:latest.

  • Both stages move from python:3.13-slim to dhi.io/python:3.13-alpine (-alpine-dev for the build).
  • GitPulse installs into a virtualenv created without pip, and that venv is the only thing copied into the runtime. The runtime has no shell or package manager and runs as the non-root UID 65532.
  • CI and the release workflow log in to dhi.io with the existing DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets. Pull requests from forks don't get secrets, so they skip the image build.
  • The version is bumped to 0.2.1, so releasing it also re-renders the Homebrew formula with urllib3 2.8.0 (0.2.0's formula pins 2.7.0).
  • The README notes the hardened base and the UID change from 1000 to 65532.

Results (same Trivy version, same Dockerfile structure)

python:3.13-slim DHI Debian DHI Alpine Chainguard (free)
Trivy findings (High) 193 (50) 73 (11) 0 0
Docker Scout – 9H 4M 13L 1H (musl; fix pending in base) 0
Size 227 MB 141 MB 105 MB 133 MB
Python pinned 3.13 3.13 3.13 latest only (3.15)

Chosen: DHI Alpine. It's the smallest, keeps Python pinned for free, and its one remaining Scout finding is in the base image, which a rebuild picks up.

Testing

  • docker buildx builds both linux/amd64 and linux/arm64. The amd64 image ran under emulation.
  • Ran org (with --save), history, and repos against fullstackspectrum, including with --user "$(id -u):$(id -g)" on a bind mount.
  • Trivy: 0 vulnerabilities. actionlint clean. pytest and ruff pass.

🤖 Generated with Claude Code

colinmoynes and others added 2 commits November 3, 2026 23:05
Switches both stages from python:3.13-slim to dhi.io/python:3.13-alpine
(and -alpine-dev for the build). GitPulse now installs into a pip-free
virtualenv that is the only thing copied into a runtime with no shell
or package manager, running as UID 65532.

Trivy findings drop from 193 (50 High) to 0, and the image shrinks
from 227 MB to 105 MB. CI and the release workflow log in to dhi.io
with the existing Docker Hub secrets; fork PRs skip the image build.

Bumps the version to 0.2.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Records the first public release and the hardened Docker image,
including the upgrade step for volumes written by the 0.2.0 image
(UID 1000 to 65532). Links the changelog from the package metadata,
ships it in the sdist, and adds it to the release steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@fullstackspectrum fullstackspectrum changed the title Build Docker image on Docker Hardened Images (Alpine) Hardened Docker image, changelog, and 0.2.1 Nov 3, 2026
@fullstackspectrum
fullstackspectrum merged commit 807a076 into main Nov 3, 2026
5 checks passed
@fullstackspectrum
fullstackspectrum deleted the hardened-image branch November 3, 2026 23:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant