Commit graph

19 commits

Author SHA1 Message Date
docker-claude
ec329ca616 chore(docker): upgrade base image to node:24-alpine (LTS)
Node 24 (Krypton) is the current LTS release.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:16:52 +02:00
docker-claude
e056e5c006 chore(docker): pin npm to 11.12.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:15:51 +02:00
docker-claude
19c59a2fb3 fix(docker): upgrade npm to remediate 11 HIGH CVEs in bundled dependencies
All findings are in npm's own bundled packages (cross-spawn, glob,
minimatch, tar). Upgrading npm to latest pulls in the patched versions:
- cross-spawn ≥7.0.5 (CVE-2024-21538)
- glob ≥10.5.0 (CVE-2025-64756)
- minimatch ≥9.0.6 (CVE-2026-26996, CVE-2026-27903, CVE-2026-27904)
- tar ≥7.5.11 (CVE-2026-23745, CVE-2026-23950, CVE-2026-24842,
               CVE-2026-26960, CVE-2026-29786, CVE-2026-31802)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:14:58 +02:00
docker-claude
484e0fecb8 revert(docker): switch back to node:20-alpine base image
Some checks failed
Build images / check-docker (push) Successful in 0s
Build images / scan (push) Failing after 57s
Build images / build-and-push (push) Has been skipped
dhi.io is unreachable on the company network, blocking apk during build.
Trivy scanning in CI provides vulnerability coverage in the meantime.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:28:45 +02:00
docker-claude
edeae9dc4b security: use dhi image for nodejs
Some checks failed
Build images / check-docker (push) Successful in 4s
Build images / scan (push) Failing after 27s
Build images / build-and-push (push) Has been skipped
2026-04-16 22:46:52 +02:00
docker-claude
698b06aafd fix: ash doesn't seem to work with the claude script
All checks were successful
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Successful in 5m4s
2026-04-16 09:48:42 +02:00
docker-claude
6e5744b456 fix claude install
Some checks failed
Build images / check-docker (push) Successful in 2s
Build images / build-and-push (push) Failing after 1m0s
2026-04-16 09:38:46 +02:00
docker-claude
0fa411a178 docs: updated inline docs
Some checks failed
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Failing after 1m5s
2026-04-15 22:43:00 +02:00
docker-claude
b76d1e5e2a chore(docker): pin Claude Code install to stable release channel
Some checks failed
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Failing after 58s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 22:40:01 +02:00
docker-claude
e78a302cb9 feat: remove webui
All checks were successful
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Successful in 5m15s
2026-04-15 21:59:08 +02:00
docker-claude
1b141b200c use new native install 2026-04-15 19:18:39 +02:00
docker-claude
1c01d49f51 feat(claude): install kubectl into container image 2026-04-15 08:47:32 +02:00
docker-claude
e19d4eb0a3 feat(mcp): add GitHub, GitLab, Jira, and Confluence MCP servers
Install four MCP servers globally in the claude image:
  @modelcontextprotocol/server-github  → mcp-server-github
  @yoda.digital/gitlab-mcp-server      → gitlab-mcp-server
  @aashari/mcp-server-atlassian-jira   → mcp-atlassian-jira
  @aashari/mcp-server-atlassian-confluence → mcp-atlassian-confluence

Wire them in managed-settings.json via mcpServers with env var
pass-through. Jira and Confluence share ATLASSIAN_* credentials.
Add api.github.com, .gitlab.com, .atlassian.net to the squid
allowlist. All credentials are optional — servers are skipped
if the relevant env vars are unset.
2026-04-14 23:09:42 +02:00
docker-claude
c65ed15653 refactor(policy): rename managed-settings.json to settings.json 2026-04-14 22:59:25 +02:00
docker-claude
3adc97d901 feat(policy): restrict available models to sonnet, opus, haiku
Add /etc/claude-code/managed-settings.json with availableModels set to
the three Anthropic model families. The file is root-owned inside the
container so the node user cannot modify it. Managed settings cannot be
bypassed via --model flag, /model command, or ANTHROPIC_MODEL env var.
2026-04-14 22:55:02 +02:00
docker-claude
1c489f8636 refactor(claude): use built-in node user instead of custom claude user
Drop the addgroup/adduser layer entirely. node:20-alpine already ships
a node user at uid/gid 1000. Update chown and USER directives, and
update the claude-config volume mount path to /home/node/.claude.
2026-04-14 22:50:59 +02:00
docker-claude
0800e4a084 fix(claude): use gid/uid 1001 for claude user
node:20-alpine reserves gid/uid 1000 for its built-in node user,
causing addgroup to fail. Shift claude to 1001.
2026-04-14 22:49:42 +02:00
docker-claude
ba3730a24d feat(auth): support subscription login alongside API key
Make ANTHROPIC_API_KEY optional. Add CLAUDE_CODE_OAUTH_TOKEN pass-through
for headless token-based auth (claude setup-token). When neither is set,
Claude Code falls back to browser OAuth on port 54545. Add claude-config
named volume mounted at ~/.claude/ in both claude and webui services so
credentials persist across container runs. Pre-create ~/.claude/ in the
Dockerfile so the volume is initialised with correct ownership. Add
--service-ports to docker compose run calls to publish port 54545 during
CLI sessions.
2026-04-14 22:47:04 +02:00
docker-claude
88805a3c24 refactor(docker): migrate both images to Alpine
Replace node:20-slim/ubuntu:22.04 with node:20-alpine/alpine:3.21.
Switch package management from apt to apk (--no-cache, no cleanup layer).
Use Alpine addgroup/adduser in claude/Dockerfile. Update proxy to use
squid user (Alpine convention) and /var/cache/squid cache path.
Fix proxy/Dockerfile COPY path now that context is proxy/. Move
webui-entrypoint.sh into claude/ to match its build context. Fix
docker-compose.yml webui context to claude/, update proxy tmpfs path.
2026-04-14 22:40:57 +02:00
Renamed from Dockerfile.claude (Browse further)