镜像构建历史
# 2025-12-12 21:32:16 0.00B 声明容器运行时监听的端口
EXPOSE [8000/tcp]
# 2025-12-12 21:32:16 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c mkdir -p /var/log/loonflow # buildkit
# 2025-12-12 21:32:16 5.77KB 执行命令并创建新的镜像层
RUN /bin/sh -c cp settings/pro.py.sample settings/config.py && sed -i "/HOMEPATH = os.environ/c\ HOMEPATH = '/var/log/loonflow'" /app/loonflow/settings/common.py # buildkit
# 2025-12-12 21:32:16 740.39KB 复制新文件或目录到容器中
COPY ./backend /app/loonflow # buildkit
# 2025-12-12 21:32:15 80.95MB 复制新文件或目录到容器中
COPY /root/.local /root/.local # buildkit
# 2025-12-12 21:31:52 0.00B 设置环境变量 PYTHONUNBUFFERED PATH
ENV PYTHONUNBUFFERED=1 PATH=/root/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2025-12-12 21:31:52 0.00B 设置工作目录为/app/loonflow
WORKDIR /app/loonflow
# 2025-12-12 21:31:52 0.00B 添加元数据标签
LABEL maintainer=blackholll@163.com
# 2025-12-09 07:40:51 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2025-12-09 07:40:51 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-12-09 07:40:50 36.76MB 执行命令并创建新的镜像层
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
# 2025-12-09 07:32:45 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=fb85a13414b028c49ba18bbd523c2d055a30b56b18b92ce454ea2c51edc656c4
# 2025-12-09 07:32:45 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.12.12
# 2025-12-09 07:32:45 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
# 2025-12-09 07:32:45 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
# 2025-12-09 07:32:45 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2025-12-09 07:32:45 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2025-12-08 08:00:00 78.62MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1765152000'
镜像信息
{
"Id": "sha256:de07aeb4702265f0f3bcbd3da9ebb4534ec1a080a72b7ab1d350db96836c9f30",
"RepoTags": [
"blackholll/loonflow-backend:r3.0.1",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/blackholll/loonflow-backend:r3.0.1"
],
"RepoDigests": [
"blackholll/loonflow-backend@sha256:79754ddaeb062772bb821996998d08b7549db6e6dbbef7822670a2ea1f5f2ebb",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/blackholll/loonflow-backend@sha256:f3daddf3d21d3771ed502e2cccaa0c5bb6c88e3dcc75f613c1e186d6c2e54277"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-12-12T13:32:16.141261099Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/root/.local/bin:/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.12",
"PYTHON_SHA256=fb85a13414b028c49ba18bbd523c2d055a30b56b18b92ce454ea2c51edc656c4",
"PYTHONUNBUFFERED=1"
],
"Cmd": [
"python3"
],
"Image": "",
"Volumes": null,
"WorkingDir": "/app/loonflow",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"maintainer": "blackholll@163.com"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 200881618,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/6fa2bf376f633bbf92ea998c34f06e756bf3cf096893b3c776198d9daad34fe8/diff:/var/lib/docker/overlay2/14df77f823661839efef316dfe1f312ae5a0092929fdc33599b5348497cc8c8e/diff:/var/lib/docker/overlay2/3e4c0ced371b98d7f793eb4c779d40e48562e0aca80c12e1bdefdeda452f371a/diff:/var/lib/docker/overlay2/c0f6f57afe49ffec0626cb260f185eade688c7d287e2ecf0377ea32b7d8db70b/diff:/var/lib/docker/overlay2/ef374ab1cc6432caade1be17b02801f51a0525d86a7a198dc417c756afb57fc7/diff:/var/lib/docker/overlay2/132e7670b9d2ad095cfcdab1db10d39f12336eb0cce658040f960e898f08b21b/diff:/var/lib/docker/overlay2/b7c9aed3b6d4f1d284f2fa48f8a636640b46a1e9d35da3a052ccf6ec2a33b53c/diff:/var/lib/docker/overlay2/b173045050bdb535e2417e2e5758bda8a33b23021d35b3dfdb02e5091986565d/diff",
"MergedDir": "/var/lib/docker/overlay2/d7179eafb116e21d11c6e9e740adbd9a1ce54a31c0a1c34fcda15234c76b91c0/merged",
"UpperDir": "/var/lib/docker/overlay2/d7179eafb116e21d11c6e9e740adbd9a1ce54a31c0a1c34fcda15234c76b91c0/diff",
"WorkDir": "/var/lib/docker/overlay2/d7179eafb116e21d11c6e9e740adbd9a1ce54a31c0a1c34fcda15234c76b91c0/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:77a2b55fbe8b9984ce0af3ffc0b0ab62507668e63306ec161a585e587a3eb164",
"sha256:d3ed01caa08409d7ff04793f0b0dfb39c0d1939740be551109e87f0e62b0a9f0",
"sha256:644f9c869502a74da62088149065804b8cd717eb2cdb30bf1e59f05361cf4724",
"sha256:602c1c97924f2a6b937eaa66046c1207e4c3eb26f7c0e66c99cb456fea375715",
"sha256:447def920dccf3f8876a7a747458bb44b724a1dc422c5a67dcc3a225d8b6e72b",
"sha256:4a2b526f750a0e9c73f606fdc8c3701a6845ee74ca2f0aa1c48c481f48577f56",
"sha256:eb277c588e70fdbf1da477c0038fccbc446b5c09f54c48b249531cbbebc8efb5",
"sha256:9358e7f31db590bf711a13951b890ad9778fa8dd4b5958876cea7226811f09e4",
"sha256:9c82a508e3e6b1476b8792795973974cd901ea09cc1872763f361a431a98cc44"
]
},
"Metadata": {
"LastTagTime": "2025-12-22T18:13:11.578791643+08:00"
}
}