Files
stack/proxy/Dockerfile
kert a94d3d4f96
Some checks failed
CI / lint (push) Successful in 39s
Deploy / notebooks (push) Has been skipped
Deploy / zotero (push) Has been skipped
Deploy / docs (push) Has been skipped
Deploy / api (push) Has been skipped
Deploy / mc (push) Has been skipped
Deploy / report (push) Successful in 15s
CI / test (push) Failing after 13m2s
Package Supply Chain / pkg-supply-chain (push) Failing after 58s
fix(proxy): daemon-style claude container — survives without TTY
ENTRYPOINT was claude, so the container's life was tied to a single
claude invocation. docker compose up (no attached TTY) → claude exits
immediately → container dies. Only docker compose run --rm with an
attached terminal kept it alive, which doesn't match how the sandbox
is meant to be used.

Now ENTRYPOINT is sleep infinity and compose pins the same. The
container stays up; users do `docker compose exec claude claude` for
interactive or one-shot sessions, or `docker compose run --rm
--entrypoint claude claude` for ephemeral runs.
2026-05-19 11:04:22 -04:00

17 lines
681 B
Docker

# Containerized Claude Code client — proxied via cf-proxy (sibling service).
# Mirrors what dev/scripts/setup-proxy-client.sh does on a WSL host, minus the
# systemd/hosts hackery (compose handles networking + extra_hosts).
FROM node:20-bookworm-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates curl git jq openssh-client \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -g @anthropic-ai/claude-code
# Daemon-style: container stays alive so users `docker compose exec` claude
# inside it. For one-shot invocations: `docker compose run --rm
# --entrypoint claude claude [-p 'prompt']`.
ENTRYPOINT ["sleep", "infinity"]