镜像构建历史
# 2026-06-19 05:32:56 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/usr/bin/tini" "-g" "--" "/opt/prefect/entrypoint.sh"]
# 2026-06-19 05:32:56 668.00B 复制新文件或目录到容器中
COPY scripts/entrypoint.sh ./entrypoint.sh # buildkit
# 2026-06-19 05:32:56 2.57MB 执行命令并创建新的镜像层
RUN |4 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 PREFECT_EXTRAS=[redis,client,otel] EXTRA_PIP_PACKAGES= /bin/sh -c prefect version # buildkit
# 2026-06-19 05:32:52 0.00B 执行命令并创建新的镜像层
RUN |4 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 PREFECT_EXTRAS=[redis,client,otel] EXTRA_PIP_PACKAGES= /bin/sh -c [ -z "${EXTRA_PIP_PACKAGES:-""}" ] || UV_COMPILE_BYTECODE=1 uv pip install "${EXTRA_PIP_PACKAGES}" # buildkit
# 2026-06-19 05:32:52 0.00B 定义构建参数
ARG EXTRA_PIP_PACKAGES=
# 2026-06-19 05:32:52 974.00B 执行命令并创建新的镜像层
RUN |3 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 PREFECT_EXTRAS=[redis,client,otel] /bin/sh -c uv pip uninstall setuptools # buildkit
# 2026-06-19 05:32:52 259.18MB 执行命令并创建新的镜像层
RUN |3 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 PREFECT_EXTRAS=[redis,client,otel] /bin/sh -c UV_COMPILE_BYTECODE=1 uv pip install "./dist/prefect.tar.gz${PREFECT_EXTRAS:-""}" && rm -rf dist/ # buildkit
# 2026-06-19 05:32:37 0.00B 定义构建参数
ARG PREFECT_EXTRAS=[redis,client,otel]
# 2026-06-19 05:32:37 13.88MB 复制新文件或目录到容器中
COPY /opt/prefect/dist ./dist # buildkit
# 2026-06-19 05:30:16 58.55MB 复制新文件或目录到容器中
COPY /uv /bin/uv # buildkit
# 2026-06-19 05:30:16 16.52KB 执行命令并创建新的镜像层
RUN |2 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 /bin/sh -c ldconfig # buildkit
# 2026-06-19 05:30:16 270.00B 复制新文件或目录到容器中
COPY /usr/local/lib/pkgconfig/sqlite3.pc /usr/local/lib/pkgconfig/ # buildkit
# 2026-06-19 05:30:16 5.98MB 复制新文件或目录到容器中
COPY /usr/local/bin/sqlite3 /usr/local/bin/ # buildkit
# 2026-06-19 05:30:16 700.29KB 复制新文件或目录到容器中
COPY /usr/local/include/sqlite3*.h /usr/local/include/ # buildkit
# 2026-06-19 05:30:16 23.00MB 复制新文件或目录到容器中
COPY /usr/local/lib/libsqlite3* /usr/local/lib/ # buildkit
# 2026-06-19 05:30:16 48.31MB 执行命令并创建新的镜像层
RUN |2 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 /bin/sh -c DEBIAN_VERSION=$(. /etc/os-release && echo $VERSION_CODENAME) && if [ "$DEBIAN_VERSION" = "bookworm" ]; then echo "deb http://deb.debian.org/debian trixie main" > /etc/apt/sources.list.d/trixie.list; apt-get update; apt-get install --no-install-recommends -y -t trixie git; rm -f /etc/apt/sources.list.d/trixie.list; else apt-get update; apt-get install --no-install-recommends -y git; fi && apt-get clean && rm -rf /var/lib/apt/lists/* && dpkg --compare-versions "$(dpkg-query -W -f='${Version}' git)" ge '1:2.47.3' || (echo "ERROR: git version must be >= 1:2.47.3" && exit 1) # buildkit
# 2026-06-19 05:30:08 307.44MB 执行命令并创建新的镜像层
RUN |2 PYTHON_VERSION=3.12 SQLITE_VERSION=3.50.4 /bin/sh -c echo 'Acquire::Retries "3";' > /etc/apt/apt.conf.d/80-retries && apt-get update && apt-get upgrade --no-install-recommends -y && apt-get install --no-install-recommends -y tini=0.19.* build-essential && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-06-19 05:29:49 0.00B 设置工作目录为/opt/prefect
WORKDIR /opt/prefect
# 2026-06-19 05:29:49 0.00B 添加元数据标签
LABEL maintainer=help@prefect.io io.prefect.python-version=3.12 io.prefect.sqlite-version=3.50.4 org.label-schema.schema-version=1.0 org.label-schema.name=prefect org.label-schema.url=https://www.prefect.io/
# 2026-06-19 05:29:49 0.00B 设置环境变量 LD_LIBRARY_PATH
ENV LD_LIBRARY_PATH=/usr/local/lib
# 2026-06-19 05:29:49 0.00B 设置环境变量 UV_SYSTEM_PYTHON
ENV UV_SYSTEM_PYTHON=1
# 2026-06-19 05:29:49 0.00B 设置环境变量 UV_LINK_MODE
ENV UV_LINK_MODE=copy
# 2026-06-19 05:29:49 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-06-19 05:29:49 0.00B 设置环境变量 LC_ALL
ENV LC_ALL=C.UTF-8
# 2026-06-19 05:29:49 0.00B 定义构建参数
ARG SQLITE_VERSION=3.50.4
# 2026-06-19 05:29:49 0.00B 定义构建参数
ARG PYTHON_VERSION=3.12
# 2026-06-11 09:11:27 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-06-11 09:11:27 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-11 09:11:27 36.77MB 执行命令并创建新的镜像层
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 $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) 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 '{}' + ; 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 -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit
# 2026-06-11 09:02:10 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684
# 2026-06-11 09:02:10 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.12.13
# 2026-06-11 09:02:10 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
# 2026-06-11 09:02:10 3.81MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; apt-get dist-clean # buildkit
# 2026-06-11 09:02:10 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-06-11 09:02:10 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-06-10 08:00:00 78.63MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1781049600'
镜像信息
{
"Id": "sha256:6ae04eeb2e7f18afd57b23a81e10bbed9f00b421e9cd5f1a5eeb968fb82538ac",
"RepoTags": [
"prefecthq/prefect:3.7.5-python3.12",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/prefecthq/prefect:3.7.5-python3.12"
],
"RepoDigests": [
"prefecthq/prefect@sha256:f7e11177bedd798fe193393ee22d50531ecadae207158e6333a9237bd2891335",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/prefecthq/prefect@sha256:f3ebfbe7f56bd6cb04b979e96eec6624cf576a46262d52aebbec377957d13cfc"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-06-18T21:32:56.511680243Z",
"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=7169605F62C751356D054A26A821E680E5FA6305",
"PYTHON_VERSION=3.12.13",
"PYTHON_SHA256=c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684",
"LC_ALL=C.UTF-8",
"UV_LINK_MODE=copy",
"UV_SYSTEM_PYTHON=1",
"LD_LIBRARY_PATH=/usr/local/lib"
],
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "/opt/prefect",
"Entrypoint": [
"/usr/bin/tini",
"-g",
"--",
"/opt/prefect/entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"io.prefect.python-version": "3.12",
"io.prefect.sqlite-version": "3.50.4",
"maintainer": "help@prefect.io",
"org.label-schema.name": "prefect",
"org.label-schema.schema-version": "1.0",
"org.label-schema.url": "https://www.prefect.io/"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 838849250,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/adcc6bbd3dc68c5129d02ccfd61fcdd239878d3e8343f2b8d8f7c3f9aa174b54/diff:/var/lib/docker/overlay2/ed7d946f8cf80e48fb3a8dc4fe3c82441f505d7bb621442738ccd2256b896424/diff:/var/lib/docker/overlay2/08197f3579232430608f43bb14d044d1b14ba1db00bf4d9a9dbb98325e8108fa/diff:/var/lib/docker/overlay2/20b593210b0ad2063d01307dc77c193143d0dbac3b4be009f8e087940b239fc3/diff:/var/lib/docker/overlay2/83cd4c31db35398cb47599498179c4e98801b2ad29bcc2cfa6d645b9be00e1f6/diff:/var/lib/docker/overlay2/32405d46a7823f6e25fd579c10fc08b8a36ca3e3a3c1d2acc0c6675e5fd25f3b/diff:/var/lib/docker/overlay2/1cee795325047b57ecb34db7d763b804ad5adf5a5945f8bf3aa97634b5685fec/diff:/var/lib/docker/overlay2/77dc862425f3125200c13f6d19f011815728211ea4a4cea03bfe1d7ef15b665e/diff:/var/lib/docker/overlay2/a42e4eac6edb21bf90d28ce1df449c89e22d96c7dfbd34c64b404795b0c36f81/diff:/var/lib/docker/overlay2/84779c9095955848430fe29f27318b47df198066275a74787cb77cfda28b67f0/diff:/var/lib/docker/overlay2/d2b1b68f9a4fd095d96a65ea62201aa2bb424f9273d42991fcc7700ce8f47fbc/diff:/var/lib/docker/overlay2/b35067c3a02ce4a394191a348fec3bf922df5b7766ed014205151774a340cb4a/diff:/var/lib/docker/overlay2/4e8489d22a379db67d71bc1181ff9e2cfde5c271908ce342565d78372c6d8770/diff:/var/lib/docker/overlay2/33311a16280aa6c34dc25aaa59d5ae56b6855f0901a6ba8652fd3b3966e4b08d/diff:/var/lib/docker/overlay2/955f3334a9e1b7373e07da65eadffe1631ac29676b5508ef6608879e7016adc6/diff:/var/lib/docker/overlay2/fa49c982a4a3698f6339173a78a800ccab2bdef4a3ac6acf6ce88b722eb117f1/diff:/var/lib/docker/overlay2/c7fe643be86b18f12e2d71189d9909355d69328e1d749a198207a366e25c850a/diff:/var/lib/docker/overlay2/6bf80804b843e7b647d6eb3c6077cb4c1de947f7d0f62e857bcc3c239b9756a9/diff",
"MergedDir": "/var/lib/docker/overlay2/1588b381b2a531b838169531f2fa2b44c0ca500745bb8f31ad7768d63b985d0a/merged",
"UpperDir": "/var/lib/docker/overlay2/1588b381b2a531b838169531f2fa2b44c0ca500745bb8f31ad7768d63b985d0a/diff",
"WorkDir": "/var/lib/docker/overlay2/1588b381b2a531b838169531f2fa2b44c0ca500745bb8f31ad7768d63b985d0a/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:f4f8b983b714f130e2cff99176baa26352db6a55d3622e10ada40f2b4720a4eb",
"sha256:6745e6c94581b7c6ac6ee921e610e7899c25ef178ea8be0c538d267485e94257",
"sha256:4a4c29065f7ee7ad8981719b93c5d8605a69ecb8a9cbb19588ec3112791f71be",
"sha256:74975aa7a061dc4da7ff605715d3d64989873032b406fe7ba080fe25f90db307",
"sha256:fa6edbabedaf2c4c0dc155576165b6ae3b3646eca5c67c71a338209538e78be0",
"sha256:ead77247f000cf0f38325b275d554ff42969764dc3f72d0b9a5bfd6288d5f0eb",
"sha256:44850762248a527e61bcc50e49fb97b79c196bbfceccf5a7601db5bcc87fa8e3",
"sha256:751f0253d08f2b02274035cde6f30d3df99588d85118e2b332dee2fbfd44385a",
"sha256:9b95ea6554c76878a90eebb2e144700fcdca58cd622fbee1e57604d5ac2823d8",
"sha256:1716ad155aa2f57d41c1933bafbc37e5a1e0582e112a46ba6c17e64f03138801",
"sha256:e7568d7bb6ac4589dd35639b5393fde56aba4746b671863059a3f6c37e4e49e4",
"sha256:fe62fcf12c94c79348fc2e14103798f1b64d3a4999b806272da8e00f67357c67",
"sha256:8ffa488587277073958cc53477dfafc62cc17e4826b3c9b7f69196291e1ae34f",
"sha256:b940de9b86b85a7cce1e7446c89192d899f019df7dee9b34fdb740e216a0e142",
"sha256:bb84c63b72b3b1d5dc03e8eb3eba0f68784daedc2ae00cd6db31638829eb842c",
"sha256:496852f6e8444e585f818d59dfeee2a050c417a86b4a2beb6776a9ec7ad07188",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:8820d1dc004d8019260d4596422a8ebf145f06372fabd9d7cf6a4d117ed2e9d9",
"sha256:29688d32e0d679e92d4dfff3545d014a847b549122efd4fa811939337899df9f"
]
},
"Metadata": {
"LastTagTime": "2026-06-19T09:09:41.041999047+08:00"
}
}