镜像构建历史
# 2026-05-14 08:24:34 94.11MB 执行命令并创建新的镜像层
RUN /bin/sh -c $VENV/bin/pip install poetry && ln -s $VENV/bin/poetry /usr/local/bin/poetry # buildkit
# 2026-05-14 08:24:25 12.84MB 执行命令并创建新的镜像层
RUN /bin/sh -c python -m venv $VENV && $VENV/bin/pip install -U pip wheel # buildkit
# 2026-05-14 08:24:20 0.00B 设置环境变量 VENV
ENV VENV=/opt/poetryvenv
# 2026-05-14 08:24:20 105.29MB 执行命令并创建新的镜像层
RUN /bin/sh -c pip install --no-cache-dir -U pip pipenv uv # buildkit
# 2026-05-14 08:24:12 2.96MB 执行命令并创建新的镜像层
RUN /bin/sh -c npm install -g corepack && corepack enable yarn # buildkit
# 2026-05-14 08:24:11 199.16MB 复制新文件或目录到容器中
COPY /node-v22.22.3-linux-x64-musl /usr/local # buildkit
# 2026-05-14 08:24:03 3.06MB 执行命令并创建新的镜像层
RUN /bin/sh -c apk add --no-cache libstdc++ # buildkit
# 2026-05-14 08:24:03 3.02KB 执行命令并创建新的镜像层
RUN /bin/sh -c addgroup -g 1000 pn && adduser -u 1000 -G pn -s /bin/sh -D pn # buildkit
# 2026-05-14 08:24:03 0.00B 添加元数据标签
LABEL org.opencontainers.image.authors=Nikolai R Kristiansen <nikolaik@gmail.com>
# 2026-05-12 07:09:35 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-05-12 07:09:35 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
# 2026-05-12 07:09:35 38.24MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apk add --no-cache --virtual .build-deps bluez-dev bzip2-dev dpkg-dev dpkg findutils gcc gdbm-dev gnupg libc-dev libffi-dev libnsl-dev libtirpc-dev linux-headers make ncurses-dev openssl-dev pax-utils readline-dev sqlite-dev tar tcl-dev tk tk-dev util-linux-dev xz xz-dev zlib-dev zstd-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 -; 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-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="-DTHREAD_STACK_SIZE=0x100000"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(apk --print-arch)"; case "$arch" in x86_64|aarch64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; x86) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; 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 '{}' + ; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' | tr ',' '\n' | sort -u | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' | xargs -rt apk add --no-network --virtual .python-rundeps ; apk del --no-network .build-deps; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit
# 2026-05-12 07:06:55 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=7e32597b99e5d9a39abed35de4693fa169df3e5850d4c334337ffd6a19a36db6
# 2026-05-12 07:06:55 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.14.5
# 2026-05-12 07:06:55 987.42KB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apk add --no-cache ca-certificates tzdata ; # buildkit
# 2026-05-12 07:06:55 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-04-16 04:01:40 0.00B 设置默认要执行的命令
CMD ["/bin/sh"]
# 2026-04-16 04:01:40 8.45MB 复制文件或目录到容器中
ADD alpine-minirootfs-3.23.4-x86_64.tar.gz / # buildkit
镜像信息
{
"Id": "sha256:e3d15c7ca894721dc369eea8d9256f0fce5a626a653f0753ab54ac3d98ef79c3",
"RepoTags": [
"nikolaik/python-nodejs:python3.14-nodejs22-alpine",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nikolaik/python-nodejs:python3.14-nodejs22-alpine"
],
"RepoDigests": [
"nikolaik/python-nodejs@sha256:aece24ade3dc8711300fc176be23cbf084a325b20315abcef21c059ae7452dd9",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nikolaik/python-nodejs@sha256:6da0edc20051f9aa7b6453c23bc7337df7c89631594cc1e5e07c207120c9a392"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-05-14T00:24:34.027361133Z",
"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",
"PYTHON_VERSION=3.14.5",
"PYTHON_SHA256=7e32597b99e5d9a39abed35de4693fa169df3e5850d4c334337ffd6a19a36db6",
"VENV=/opt/poetryvenv"
],
"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": 465101410,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/845e2a6605d8abb2470605cacf89cc2d13ad1f945f11af5fa705b928f9a72fbb/diff:/var/lib/docker/overlay2/fcd81ee023b91fe2eeb56b951f2c30fbac1f29436b5cdb97d54bd3c7f1199114/diff:/var/lib/docker/overlay2/eb343f8c020177f7f2c8836ca2ba46c1dc78704445d4da6c83ed9d739626850f/diff:/var/lib/docker/overlay2/7bd5d9d8250ad9ccecb23dc90752ee0baeaf13738f76f7c2039ece30ae442f10/diff:/var/lib/docker/overlay2/ac03b424509322034b1e6cb0e9b99ea93be2f0eee95a065178c4dc9bfc789e0f/diff:/var/lib/docker/overlay2/a2f68cf835ca6df306625db3d471dfb16b0e0a6d9d2aa35d1f2192e07d8ff427/diff:/var/lib/docker/overlay2/6f43aae6b65f33d665a1c39e8eaf1eca1ca2877fe32adf55baedaf1550d5b581/diff:/var/lib/docker/overlay2/85928e650a33309146e11755334095f4cea41f035c27c2b9a7f0041c4e4e9a7e/diff:/var/lib/docker/overlay2/9c299c6b37861d2855a8a4107a46b082846e10dcb558e8ad2f4c3a08d02befd3/diff:/var/lib/docker/overlay2/9a1ef5a883ef2cbf9a0d960bba5d783f7ecd7d9d3ba8bb8cd5537b33d65a942f/diff",
"MergedDir": "/var/lib/docker/overlay2/1a007e0344299c4ac0369f7dd8b2a36fc85a0434b4da47659b396b57fab85000/merged",
"UpperDir": "/var/lib/docker/overlay2/1a007e0344299c4ac0369f7dd8b2a36fc85a0434b4da47659b396b57fab85000/diff",
"WorkDir": "/var/lib/docker/overlay2/1a007e0344299c4ac0369f7dd8b2a36fc85a0434b4da47659b396b57fab85000/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:29df493baa13de438d6d2ece3a8333032e0b7b9b9d8cce4ee82194da255f61e1",
"sha256:90a233922654781f30e9d89c62dfebc73360c3b401ca67f06df0d1969d44f4a8",
"sha256:d457bf49462c638c34274b8fb5d7c23274c402b15b6c4b117f66464b7655d290",
"sha256:02d34f55b639ad9e4197e4be883e6d8cca5d25b87f59657369c472e31f2a2892",
"sha256:78e6a1f600766f9d93da31e832abf7eac5f75ae385ecbb60e039a8999e00d25a",
"sha256:5a76d48ba98e200a91647caab8cb686a8164df96c64baf21fd7fccb966954eb7",
"sha256:5a8187049886897bc11dc9492203567256501d348abe31344623ae77e48eafd1",
"sha256:253c986cd565b676548e8b0d9b30f700e389f7a54c086a96de9285a8cf0f9cdc",
"sha256:f65f70f6c90caa6f27a12d2640cc78b9001c5f556506ee972b5070c2df1aa565",
"sha256:7f7d63a05d58311a12bc1d75c1416e718d2b6b30b169cd8bcb134b063f4c2081",
"sha256:aa567818be6c2eb02654548f1fd16cda90ba76517a990113f58d51c5ac324e59"
]
},
"Metadata": {
"LastTagTime": "2026-06-08T10:45:28.408591229+08:00"
}
}