镜像构建历史
# 2026-06-18 21:01:21 88.31MB 执行命令并创建新的镜像层
RUN /bin/sh -c $VENV/bin/pip install poetry && ln -s $VENV/bin/poetry /usr/local/bin/poetry # buildkit
# 2026-06-18 21:01:14 11.92MB 执行命令并创建新的镜像层
RUN /bin/sh -c python -m venv $VENV && $VENV/bin/pip install -U pip wheel # buildkit
# 2026-06-18 21:01:09 0.00B 设置环境变量 VENV
ENV VENV=/opt/poetryvenv
# 2026-06-18 21:01:09 100.78MB 执行命令并创建新的镜像层
RUN /bin/sh -c pip install --no-cache-dir -U pip pipenv uv # buildkit
# 2026-06-18 21:01:03 2.37MB 执行命令并创建新的镜像层
RUN /bin/sh -c npm install -g corepack && corepack enable yarn # buildkit
# 2026-06-18 21:01:02 199.19MB 复制新文件或目录到容器中
COPY /node-v22.23.0-linux-x64-musl /usr/local # buildkit
# 2026-06-18 21:00:55 3.05MB 执行命令并创建新的镜像层
RUN /bin/sh -c apk add --no-cache libstdc++ # buildkit
# 2026-06-18 21:00:55 3.02KB 执行命令并创建新的镜像层
RUN /bin/sh -c addgroup -g 1000 pn && adduser -u 1000 -G pn -s /bin/sh -D pn # buildkit
# 2026-06-18 21:00:55 0.00B 添加元数据标签
LABEL org.opencontainers.image.authors=Nikolai R Kristiansen <nikolaik@gmail.com>
# 2026-06-16 08:25:55 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-06-16 08:25:55 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-06-16 08:25:55 36.12MB 执行命令并创建新的镜像层
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 ; 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-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-06-16 08:20:06 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=639e43243c620a308f968213df9e00f2f8f62332f7adbaa7a7eeb9783057c690
# 2026-06-16 08:20:06 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.13.14
# 2026-06-16 08:20:06 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
# 2026-06-16 08:20:06 905.25KB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apk add --no-cache ca-certificates tzdata ; # buildkit
# 2026-06-16 08:20:06 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-06-16 08:01:29 0.00B 设置默认要执行的命令
CMD ["/bin/sh"]
# 2026-06-16 08:01:29 8.42MB 复制文件或目录到容器中
ADD alpine-minirootfs-3.24.1-x86_64.tar.gz / # buildkit
镜像信息
{
"Id": "sha256:7ef2b7d7bc4eef6e4c47fa9adbdf153b7b03733576ee002df24c63571eb649e0",
"RepoTags": [
"nikolaik/python-nodejs:python3.13-nodejs22-alpine",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nikolaik/python-nodejs:python3.13-nodejs22-alpine"
],
"RepoDigests": [
"nikolaik/python-nodejs@sha256:caef75c2ef34582cb86a12f53a8150012618e4478a607b623cfbab884d30ca69",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nikolaik/python-nodejs@sha256:a71d5c7671a7e91a485ec846fb73bebae62a7d32c979556751aed1f31da47452"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-06-18T13:01:21.673416671Z",
"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",
"GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305",
"PYTHON_VERSION=3.13.14",
"PYTHON_SHA256=639e43243c620a308f968213df9e00f2f8f62332f7adbaa7a7eeb9783057c690",
"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": 451071491,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/5d463ecfc5c7de7363ab469ff69ff136200360b4074938be76e7a11c9f0623f1/diff:/var/lib/docker/overlay2/365de4ecbaf6c8078f49240e5f74962a748089b7ba92416725da27754a00086d/diff:/var/lib/docker/overlay2/49eb90db6b2ee7bd13922d4e37cdec3c093d0f2489af08f80365a4c8fb95455c/diff:/var/lib/docker/overlay2/dcd5b100138620510df7986b35f81a1d56fedf55bedb95fe96a2063a3fe06b54/diff:/var/lib/docker/overlay2/525c36b15637299f3c859d91aa49b1c94e3ff0f088da23b8e39e38fdd34cc0b6/diff:/var/lib/docker/overlay2/5ea0d801529c040f8a9f091acb2d35e1c6f22b4f0ee1fa409e4feb7c5de826af/diff:/var/lib/docker/overlay2/8c7d650476729806fa2c2081246133750dbb5a3963de3bbae11da1957e82b09e/diff:/var/lib/docker/overlay2/af7b5158e069a86842be215adbfc4a087453da842ce90d7d6ab6d85f1a5a6c75/diff:/var/lib/docker/overlay2/6f0492c23ba3d02e423ea5a6cc538727b6dfd07c690014fd227d5a447dfb3012/diff:/var/lib/docker/overlay2/11524a671b133f199bded2c6a8962e73b3f7140dba5a8aeac21a92d451bbd2c1/diff",
"MergedDir": "/var/lib/docker/overlay2/e34a915df20129eaf6a907ed0694c6f080faa148b3dcc3e5670768af175d701c/merged",
"UpperDir": "/var/lib/docker/overlay2/e34a915df20129eaf6a907ed0694c6f080faa148b3dcc3e5670768af175d701c/diff",
"WorkDir": "/var/lib/docker/overlay2/e34a915df20129eaf6a907ed0694c6f080faa148b3dcc3e5670768af175d701c/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c",
"sha256:60ec85ef133910d04c4b911093e46f0ebf1e337a5a5ac44afc3eead558ad9102",
"sha256:cd07d2f8dc272a0bd5b2aa247eac990f9b33958cd809854ff9e80395c8fd128a",
"sha256:ac1843fa896bf8b274116ea9c25f5573942f764bf453e0a19dc2aef4ddabd532",
"sha256:8be15bf214f1f805f74e6442864a1f30e4a71a4c0ef2c293b1edf015c7404c76",
"sha256:aba3f79a20ef667484aee4dba65b48f2e2ceaf6383b1704103f5594b0695a9c1",
"sha256:2757eb424d9ea7c3ebb89ba5061633473519e72e916d8a937c425667fdf32a13",
"sha256:23b09beaecaa6f8775c66092538dcf7ddae6b2f6fc205ac956bd035853103215",
"sha256:3947b719419f071afece99897fec5682724c63492d10e0895cc8fb5d10c92c53",
"sha256:a7fa4c79449ff867e63e83c656ffcf5faf66228da2836a9ece0684d860a78306",
"sha256:249f1833603ad92f7c93e3c04738a2d55ea810940e1b86bda2e099e5d7ebda47"
]
},
"Metadata": {
"LastTagTime": "2026-06-19T00:27:25.546315161+08:00"
}
}