Skip to content

build: push image to project ghcr registry - #17

Open
sbp-bvanb wants to merge 13 commits into
mainfrom
docker-push
Open

build: push image to project ghcr registry#17
sbp-bvanb wants to merge 13 commits into
mainfrom
docker-push

Conversation

@sbp-bvanb

Copy link
Copy Markdown
Collaborator

Push docker image to private registry.

sbp-bvanb and others added 13 commits August 3, 2026 21:03
…ache

- Accept NODE_VERSION, --chmod, and CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS
  keys in dockle to suppress CIS-DI-0010 false positives
- Add rm -rf /var/lib/apt/lists/* after glab apt-get install to fix DKL-DI-0005

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…arnings

Add --strip-components, DISABLE_AUTOUPDATER, ARCH, and nodejs to the
dockle-accept-key list; all are build-time shell variables or package names
misidentified as credentials.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…-root user

Separate build-time tooling (curl, gnupg, unzip, apt repo infrastructure)
from the runtime image. The installer stage downloads and verifies all
binaries; the runtime stage starts fresh and only installs runtime apt
packages, copying binaries from the installer stage. npm globals use an
explicit /opt/npm-global prefix for predictable COPY paths.

Bake a `claude` user at UID/GID 999 in the runtime image and update the
entrypoint fallback (HOST_UID=0) to drop to that user instead of running
as root, so the container workload is never root by default.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…mp node to 24.18.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…d Dockerfile

- chmod -s account-management, mount, and host-based SSH auth binaries
  that this container never exercises (entrypoint drops privilege via
  runuser, not su), closing off privilege-escalation paths for the
  claude user (dockle CIS-DI-0008)
- remove /opt/tfenv/Dockerfile, an unnecessary file bundled in tfenv's
  release tarball (dockle DKL-LI-0003)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Root-start-then-drop is load-bearing, not a fixable oversight: the
entrypoint needs root to chown /root to the host UID and useradd a
matching passwd entry before dropping via runuser, and no-new-privileges
rules out a file-capability workaround. Document why alongside the
existing Dockerfile comment instead of letting dockle flag it every run.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
806b843 baked a static claude user/group (999:999) into the image but
left the entrypoint's runtime UID-mapping untouched, causing two
regressions:

- Non-zero HOST_UID: useradd/groupadd tried to create a SECOND account
  named `claude`, which always fails with "already exists" once the
  name (not just the UID/GID) collides — i.e. on every real host UID.
  Fixed by usermod/groupmod-ing the existing baked account instead.

- HOST_UID=0 (unset): the entrypoint dropped to the baked-in claude
  account but skipped the chown walk (early exit), leaving /root
  root-owned 0700 — claude couldn't even traverse into its own HOME,
  breaking settings seeding and any persisted state. Fixed by folding
  this path into the same chown-then-drop flow, targeting 999:999.

Updates smoke.sh/assert-in-container.sh/ci.yml, which still encoded the
pre-806b843 assumption that HOST_UID=0 stays root.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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