镜像构建历史
# 2025-04-09 20:03:15 230.95MB 执行命令并创建新的镜像层
RUN /bin/sh -c pip install -U pip pipenv uv && curl -fsSL --compressed https://install.python-poetry.org | python - # buildkit
# 2025-04-09 20:02:58 85.00B 执行命令并创建新的镜像层
RUN /bin/sh -c corepack enable yarn # buildkit
# 2025-04-09 20:02:58 154.03MB 执行命令并创建新的镜像层
RUN /bin/sh -c NODE_VERSION="v18.20.8" ARCH= && dpkgArch="$(dpkg --print-architecture)" && case "${dpkgArch##*-}" in amd64) ARCH='x64';; arm64) ARCH='arm64';; *) echo "unsupported architecture"; exit 1 ;; esac && for key in $(curl -sL https://raw.githubusercontent.com/nodejs/docker-node/HEAD/keys/node.keys); 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/$NODE_VERSION/node-$NODE_VERSION-linux-$ARCH.tar.xz" && curl -fsSLO --compressed "https://nodejs.org/dist/$NODE_VERSION/SHASUMS256.txt.asc" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && grep " node-$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - && tar -xJf "node-$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner && rm "node-$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt && ln -s /usr/local/bin/node /usr/local/bin/nodejs # buildkit
# 2025-04-09 20:02:48 10.90MB 执行命令并创建新的镜像层
RUN /bin/sh -c apt-get update && apt-get install curl gnupg2 xz-utils -yqq && apt-get upgrade -yqq && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-04-09 20:02:44 0.00B 设置环境变量 POETRY_HOME
ENV POETRY_HOME=/usr/local
# 2025-04-09 20:02:44 8.88KB 执行命令并创建新的镜像层
RUN /bin/sh -c groupadd --gid 1000 pn && useradd --uid 1000 --gid pn --shell /bin/bash --create-home pn # buildkit
# 2025-04-09 20:02:44 0.00B 添加元数据标签
LABEL org.opencontainers.image.authors=Nikolai R Kristiansen <nikolaik@gmail.com>
# 2025-04-09 03:02:43 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2025-04-09 03:02:43 36.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit
# 2025-04-09 03:02:43 43.26MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared --with-lto --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:--Wl},--strip-all"; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:--Wl},-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", 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; rm -rf /var/lib/apt/lists/*; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 install --disable-pip-version-check --no-cache-dir --no-compile 'setuptools==65.5.1' wheel ; pip3 --version # buildkit
# 2025-04-09 03:02:43 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=4c68050f049d1b4ac5aadd0df5f27941c0350d2a9e7ab0907ee5eb5225d9d6b0
# 2025-04-09 03:02:43 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.10.17
# 2025-04-09 03:02:43 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
# 2025-04-09 03:02:43 9.23MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; rm -rf /var/lib/apt/lists/* # buildkit
# 2025-04-09 03:02:43 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2025-04-09 03:02:43 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2025-04-07 08:00:00 74.83MB
# debian.sh --arch 'amd64' out/ 'bookworm' '@1743984000'
镜像信息
{
"Id": "sha256:b509878782becf0424a8ddb6c138f2bb023cbd81f9233981397c2c64d785e773",
"RepoTags": [
"nikolaik/python-nodejs:python3.10-nodejs18-slim",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nikolaik/python-nodejs:python3.10-nodejs18-slim"
],
"RepoDigests": [
"nikolaik/python-nodejs@sha256:840e0ebe6385f2350008f6cf60711958ec90297363ecb246fceac7ca0e6b6401",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nikolaik/python-nodejs@sha256:af8c89c5e86c3dab9143b244c55292ff2c07f533f8679c16b7c70fa1d5c06405"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-04-09T12:03:15.954827225Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=C.UTF-8",
"GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D",
"PYTHON_VERSION=3.10.17",
"PYTHON_SHA256=4c68050f049d1b4ac5aadd0df5f27941c0350d2a9e7ab0907ee5eb5225d9d6b0",
"POETRY_HOME=/usr/local"
],
"Cmd": [
"python3"
],
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.opencontainers.image.authors": "Nikolai R Kristiansen \u003cnikolaik@gmail.com\u003e"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 523221142,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/cc05711b3b4894108dc01faabdc530ff85164c14e89ddd78be3cd79c23b22971/diff:/var/lib/docker/overlay2/c94d571a149aa9c91951d8c9ea63799c373e56a852f48a4ead9369ea1f629174/diff:/var/lib/docker/overlay2/2378287a411cb33245b3ecb73ee7279c2fe91f21544fccbd947819c5c58789e2/diff:/var/lib/docker/overlay2/b9c5c7f339eb9b9e3455c410dc1d88d56fe55fc07a21c33686201ce4fbdd4088/diff:/var/lib/docker/overlay2/f9c67ad9b7734cee29f43297ffabcbf0f55e98ef4b65a611861404056774d09e/diff:/var/lib/docker/overlay2/8286d6045e1366fc7ca38b8914254c41eb48d631d9ee2558bfae2cf262c72327/diff:/var/lib/docker/overlay2/52a6aae33ff658a70dc3148a1f73249a6960d6414869acc1d27146d56677a77c/diff:/var/lib/docker/overlay2/6e6a23791101250936ad6a062fcac20c125f8e7a45397e3e1de35db95dec129d/diff",
"MergedDir": "/var/lib/docker/overlay2/7b9f629f46abcccb3cd5a9b7cca9dd8d55aa298cf364d66925ba661ff53a9235/merged",
"UpperDir": "/var/lib/docker/overlay2/7b9f629f46abcccb3cd5a9b7cca9dd8d55aa298cf364d66925ba661ff53a9235/diff",
"WorkDir": "/var/lib/docker/overlay2/7b9f629f46abcccb3cd5a9b7cca9dd8d55aa298cf364d66925ba661ff53a9235/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:ea680fbff095473bb8a6c867938d6d851e11ef0c177fce983ccc83440172bd72",
"sha256:2812d23b9503a8a78314f98836ba803670ad64a06aeab1cbbef05e4c08eab089",
"sha256:782172545eb89aa6800baef0ff4dcf01c22814d8fbc959feabd0607ebf26bb2b",
"sha256:eb863a62a331b56a548290a3e7413f28fc672f9f45f9c76de0590d6345a6076c",
"sha256:5279142495edf634699f93bbfd9976eb0c17d60bf398d38dd5169c0713261f5e",
"sha256:182a71c1fb0835a411264210ad776b697d84f693c0def40ca561346fdcf992a8",
"sha256:ba901e94a0bda77e709986a734834b7bbd5bfb766e9f56f31c0188a5e6dc9581",
"sha256:80124403ccab58802b60479dbd0187375038ec287009b08667f5bbb959e76c34",
"sha256:632de78e47f512f29874b1fe4ddf6830de00487b5d35b4cffde2b37fbc955c74"
]
},
"Metadata": {
"LastTagTime": "2026-02-03T11:28:16.543567818+08:00"
}
}