镜像构建历史
# 2025-11-17 05:03:56 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["npx" "claude"]
# 2025-11-17 05:03:56 0.00B 执行命令并创建新的镜像层
RUN |1 CLAUDE_CODE_VERSION=2.0.42 /bin/sh -c /home/appuser/.nodenv/bin/nodenv init - bash > /dev/null || true # buildkit
# 2025-11-17 05:03:56 4.47KB 执行命令并创建新的镜像层
RUN |1 CLAUDE_CODE_VERSION=2.0.42 /bin/sh -c echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bashrc && echo 'eval "$(nodenv init - bash)"' >> ~/.bashrc && echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.profile && echo 'eval "$(nodenv init - bash)"' >> ~/.profile # buildkit
# 2025-11-17 05:03:56 0.00B 设置环境变量 NODENV_ROOT
ENV NODENV_ROOT=/home/appuser/.nodenv
# 2025-11-17 05:03:56 0.00B 设置环境变量 PATH
ENV PATH=/home/appuser/.nodenv/bin:/home/appuser/.nodenv/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2025-11-17 05:03:56 0.00B 执行命令并创建新的镜像层
RUN |1 CLAUDE_CODE_VERSION=2.0.42 /bin/sh -c mkdir -p /home/appuser/.nodenv/versions && chown -R appuser:appuser /home/appuser/.nodenv/versions # buildkit
# 2025-11-17 05:03:55 7.90MB 执行命令并创建新的镜像层
RUN |1 CLAUDE_CODE_VERSION=2.0.42 /bin/sh -c git clone https://github.com/nodenv/node-build.git "$($HOME/.nodenv/bin/nodenv root)"/plugins/node-build # buildkit
# 2025-11-17 05:03:54 1.57MB 执行命令并创建新的镜像层
RUN |1 CLAUDE_CODE_VERSION=2.0.42 /bin/sh -c git clone https://github.com/nodenv/nodenv.git ~/.nodenv # buildkit
# 2025-11-17 05:03:54 0.00B 指定运行容器时使用的用户
USER appuser
# 2025-11-17 05:03:54 32.59KB 执行命令并创建新的镜像层
RUN |1 CLAUDE_CODE_VERSION=2.0.42 /bin/sh -c useradd -m appuser && chown -R appuser:appuser /app # buildkit
# 2025-11-17 05:03:54 22.66KB 复制新文件或目录到容器中
COPY . . # buildkit
# 2025-11-17 05:03:54 722.00B 复制新文件或目录到容器中
COPY /app/node_modules ./node_modules # buildkit
# 2025-11-17 05:03:54 1.47MB 执行命令并创建新的镜像层
RUN |1 CLAUDE_CODE_VERSION=2.0.42 /bin/sh -c apt-get update && apt-get install -y jq && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-11-17 05:03:50 138.77MB 执行命令并创建新的镜像层
RUN |1 CLAUDE_CODE_VERSION=2.0.42 /bin/sh -c apt-get update && apt-get install -y git gh && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-11-17 05:03:42 16.55MB 执行命令并创建新的镜像层
RUN |1 CLAUDE_CODE_VERSION=2.0.42 /bin/sh -c apt-get update && apt-get install -y bash curl && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-11-17 05:03:35 139.70MB 执行命令并创建新的镜像层
RUN |1 CLAUDE_CODE_VERSION=2.0.42 /bin/sh -c echo "Installing claude-code version: ${CLAUDE_CODE_VERSION}" && npm install -g @anthropic-ai/claude-code@${CLAUDE_CODE_VERSION} # buildkit
# 2025-11-17 05:03:32 0.00B 定义构建参数
ARG CLAUDE_CODE_VERSION=2.0.42
# 2025-11-17 05:03:32 0.00B 设置工作目录为/app
WORKDIR /app
# 2025-11-17 05:03:32 0.00B 设置环境变量 SHELL
ENV SHELL=/bin/bash
# 2025-11-17 05:03:32 0.00B 设置环境变量 NODE_ENV
ENV NODE_ENV=production
# 2024-10-30 04:39:22 0.00B 设置默认要执行的命令
CMD ["node"]
# 2024-10-30 04:39:22 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["docker-entrypoint.sh"]
# 2024-10-30 04:39:22 388.00B 复制新文件或目录到容器中
COPY docker-entrypoint.sh /usr/local/bin/ # buildkit
# 2024-10-30 04:39:22 7.18MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -ex && savedAptMark="$(apt-mark showmanual)" && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr --no-install-recommends && rm -rf /var/lib/apt/lists/* && export GNUPGHOME="$(mktemp -d)" && for key in 6A010C5166006599AA17F08146C2130DFD2497F5 ; do gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; done && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && gpgconf --kill all && rm -rf "$GNUPGHOME" && mkdir -p /opt && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && apt-mark auto '.*' > /dev/null && { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; } && find /usr/local -type f -executable -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && yarn --version && rm -rf /tmp/* # buildkit
# 2024-10-30 04:39:22 0.00B 设置环境变量 YARN_VERSION
ENV YARN_VERSION=1.22.22
# 2024-10-30 04:39:22 137.80MB 执行命令并创建新的镜像层
RUN /bin/sh -c ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" && case "${dpkgArch##*-}" in amd64) ARCH='x64' OPENSSL_ARCH='linux-x86_64';; ppc64el) ARCH='ppc64le' OPENSSL_ARCH='linux-ppc64le';; s390x) ARCH='s390x' OPENSSL_ARCH='linux*-s390x';; arm64) ARCH='arm64' OPENSSL_ARCH='linux-aarch64';; armhf) ARCH='armv7l' OPENSSL_ARCH='linux-armv4';; i386) ARCH='x86' OPENSSL_ARCH='linux-elf';; *) echo "unsupported architecture"; exit 1 ;; esac && set -ex && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends && rm -rf /var/lib/apt/lists/* && export GNUPGHOME="$(mktemp -d)" && for key in C0D6248439F1D5604AAFFB4021D900FFDB233756 DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 CC68F5A3106FF448322E48ED27F5E38D5B0A215F 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C 108F52B48DB57BB0CC439B2997B01419BD92F80A A363A499291CBBC940DD62E41F10027AF002F8B0 ; do gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; done && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && gpgconf --kill all && rm -rf "$GNUPGHOME" && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; && apt-mark auto '.*' > /dev/null && find /usr/local -type f -executable -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && ln -s /usr/local/bin/node /usr/local/bin/nodejs && node --version && npm --version # buildkit
# 2024-10-30 04:39:22 0.00B 设置环境变量 NODE_VERSION
ENV NODE_VERSION=22.11.0
# 2024-10-30 04:39:22 8.90KB 执行命令并创建新的镜像层
RUN /bin/sh -c groupadd --gid 1000 node && useradd --uid 1000 --gid node --shell /bin/bash --create-home node # buildkit
# 2024-10-30 04:39:22 74.82MB
# debian.sh --arch 'amd64' out/ 'bookworm' '@1733097600'
镜像信息
{
"Id": "sha256:57bf4531045648a36f003c3853e38d45faf0d9f4c80cd4e44ed94851b1544a76",
"RepoTags": [
"gendosu/claude-code-docker:2.0.42",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gendosu/claude-code-docker:2.0.42"
],
"RepoDigests": [
"gendosu/claude-code-docker@sha256:344c97f9600e07a2b3d691e0dcd8f03c28f64fc05a2dea5eba4fdfa11228de22",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gendosu/claude-code-docker@sha256:2c982a514cdb662b80ffdb6dfb834f65fa5c9c4971d1ee5a56d11fbc79437692"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-11-16T21:03:56.210972195Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "appuser",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/home/appuser/.nodenv/bin:/home/appuser/.nodenv/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=22.11.0",
"YARN_VERSION=1.22.22",
"NODE_ENV=production",
"SHELL=/bin/bash",
"NODENV_ROOT=/home/appuser/.nodenv"
],
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": [
"npx",
"claude"
],
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 525815961,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/f00c6f26510f8f904e8d49b484a5e0e2d09612d76bc94aaad1113e392a1c75ca/diff:/var/lib/docker/overlay2/4b9d1c697a6d3a69d99c20e75bfd7854902c58c69b681ff4a50b53c0b7046082/diff:/var/lib/docker/overlay2/e04d45803ab8a6303c1957048556e316c5ec3c68e0538c8ab58f6e347f1141e9/diff:/var/lib/docker/overlay2/db8e4bcbe6728db1b7e95c6e3fc6c88f8b7de63aa3ca2662ed2ffcd8dc179244/diff:/var/lib/docker/overlay2/0653f241b83b458f68b3b23ae284472c7bc53a213fb449cf3bd8f830c79955c3/diff:/var/lib/docker/overlay2/a9328dcd8c69b506892d8ec514be38f68910736356734cfc2c56fd0d51e87ea4/diff:/var/lib/docker/overlay2/2bd2275715fac9c881b9d2701f444758a8d684391343a7891653edf9acc01b68/diff:/var/lib/docker/overlay2/925deb3b12d3989e94ee12c88a3a32c1bad67ac7e69526db96ae28f32f54a494/diff:/var/lib/docker/overlay2/a76aa0114f131722ee76bd36929e76955e4db31b27808f20012b23f11ed6db57/diff:/var/lib/docker/overlay2/e7638b7fce67978b1fb2773830beee17dab927e28ef0ec3c230f47bbb3e26b33/diff:/var/lib/docker/overlay2/38063c0838bf9096777761dfecbcc55726105362d85780536aaf633b3db0b30e/diff:/var/lib/docker/overlay2/8ad2a37347710730d56eb5f82b00c1210ea53bb5a44c9e44db414d45a3e82255/diff:/var/lib/docker/overlay2/88f93f592b81825fe606a1c620be12d0a766b4ca244942d789e3ae45c1b3b013/diff:/var/lib/docker/overlay2/591e91223268489f6229fe282bc199637db88b20bd0f2869943df266ef0f3086/diff:/var/lib/docker/overlay2/5c3f7c9cddafa45decb1787eae8098a29169b3d96bbf2199c53f98870f7cf59a/diff:/var/lib/docker/overlay2/8f3d3482b738688cb86066b1d76541fc17131352dc041d41dbea019c15aa05b2/diff:/var/lib/docker/overlay2/404e59c4c9adc52232d40ea19adf6c8d76b2fc9392dc54e49d9840bbd9ffc580/diff",
"MergedDir": "/var/lib/docker/overlay2/d7e03d8923c67bd79afcfd767a907e7c243980b1753b39f325fd340ea197eb7a/merged",
"UpperDir": "/var/lib/docker/overlay2/d7e03d8923c67bd79afcfd767a907e7c243980b1753b39f325fd340ea197eb7a/diff",
"WorkDir": "/var/lib/docker/overlay2/d7e03d8923c67bd79afcfd767a907e7c243980b1753b39f325fd340ea197eb7a/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:c0f1022b22a9b36851b358f44e5475e39d166e71a8073cf53c894a299239b1c5",
"sha256:813735500b64da34abf94928d38ceb5c6234650b3ef1bb7139182a587955c997",
"sha256:375d53fbfd816fe31e46853e7be8fa4b40e8185817b6145a588e0ece23b01a36",
"sha256:08758c38ba9c0963e33b7e065aa1f42da60558fdd0639d0170c55632eeef6d68",
"sha256:fcbdea13583388aeef331d95b3e4eaaf67ba0ec0e5fbac162a32b721a345bd4e",
"sha256:2ed7b59b366d7b89d191e501d2a63565dc7915793597aa54df639fb6c4fc3753",
"sha256:6ddc8e765fd3da7ca9ff43ee7e3de2177cdf2d3f2e79a7561ccc199f06b77b4e",
"sha256:37b893afabdd243e9ed04ef427f6510525b55bf336094bf510bbdb443862ce49",
"sha256:7a4f4d18204ffc14a910b4d463d657c9b5d19936fa74813525aea4a83c2831aa",
"sha256:1d13d66b6caa9c963f54f1de0b292514ca5ff3b76e25f0e99d8ef447d1c64915",
"sha256:57834788485f4006b106f401cb4100d2c4d07a445fb8cf645e666671f8303a6b",
"sha256:97f83fcff3b54532b0c9373da54295007f970209a1e0b6f06dd727b6cbf9d31c",
"sha256:29e3157de496c2e311ad5387c66fe67899a54bdf0513141466e7dc0eb4d44177",
"sha256:4ee75030942ac758a7f9ac622a31eef1d6832223c9343a444dc1641553c30223",
"sha256:a01de5256c63388cf6169077fe31f37f624c3902bf255425fa5887eaf3a2dbbb",
"sha256:26706ebfdfcf8da40b286302b24b846777994a77d81e92beb0c23687fdc4aca1",
"sha256:880d38c66d64f670116b7728e3ea3a72adaedf0841130eddd420fb1bb97dc4df",
"sha256:ffc897bf9601a60d39cede2d0671f38cda1422e3b40b70e2ae99115b8c9b4621"
]
},
"Metadata": {
"LastTagTime": "2026-01-21T20:35:26.219831135+08:00"
}
}