镜像构建历史
# 2026-02-11 11:52:31 0.00B 设置默认要执行的命令
CMD ["python" "app.py"]
# 2026-02-11 11:52:31 92.58MB 复制新文件或目录到容器中
COPY main/xiaozhi-server . # buildkit
# 2026-02-05 17:53:03 6.25GB 执行命令并创建新的镜像层
RUN /bin/sh -c pip install --no-cache-dir --upgrade pip setuptools wheel && pip install --no-cache-dir -r requirements.txt --default-timeout=120 --retries 5 # buildkit
# 2026-02-05 17:46:11 868.00B 复制新文件或目录到容器中
COPY main/xiaozhi-server/requirements.txt . # buildkit
# 2026-02-05 17:46:11 0.00B 设置工作目录为/opt/xiaozhi-esp32-server
WORKDIR /opt/xiaozhi-esp32-server
# 2026-02-05 17:46:11 0.00B 设置环境变量 LANG LC_ALL LANGUAGE PYTHONIOENCODING
ENV LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 LANGUAGE=zh_CN:zh PYTHONIOENCODING=utf-8
# 2026-02-05 17:46:11 5.73MB 执行命令并创建新的镜像层
RUN /bin/sh -c pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && pip config set global.trusted-host mirrors.aliyun.com && pip config set global.timeout 120 && pip config set install.retries 5 # buildkit
# 2026-02-05 17:46:09 467.05MB 执行命令并创建新的镜像层
RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends libopus0 ffmpeg locales && sed -i '/zh_CN.UTF-8/s/^# //g' /etc/locale.gen && locale-gen && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-02-05 04:30:08 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-02-05 04:30:08 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-02-05 04:30:08 39.44MB 执行命令并创建新的镜像层
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"; 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 install --disable-pip-version-check --no-cache-dir --no-compile 'setuptools==79.0.1' 'wheel<0.46' ; pip3 --version # buildkit
# 2026-02-05 04:14:45 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=c8f4a596572201d81dd7df91f70e177e19a70f1d489968b54b5fbbf29a97c076
# 2026-02-05 04:14:45 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.10.19
# 2026-02-05 04:14:45 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
# 2026-02-05 04:14: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
# 2026-02-05 04:14:45 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-02-05 04:14:45 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-02-02 08:00:00 78.62MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1769990400'
镜像信息
{
"Id": "sha256:b587910f29ff6914621cbf36847b2f8497e3365c9e0929f7163643240eb2fe5d",
"RepoTags": [
"ghcr.io/ghcr.nju.edu.cn/xinnan-tech/xiaozhi-esp32-server:server_latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/ghcr.nju.edu.cn/xinnan-tech/xiaozhi-esp32-server:server_latest"
],
"RepoDigests": [
"ghcr.io/ghcr.nju.edu.cn/xinnan-tech/xiaozhi-esp32-server@sha256:4f84a348dbd1c11c317f9a3126d2894285decfb1fb529d65a7c638ae3f29aaef",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/ghcr.nju.edu.cn/xinnan-tech/xiaozhi-esp32-server@sha256:91f79e6e007896398e31adc049ebff26cf3e9c4f058bea350affaaf1fae2be00"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-02-11T03:52:31.677563911Z",
"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=zh_CN.UTF-8",
"GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D",
"PYTHON_VERSION=3.10.19",
"PYTHON_SHA256=c8f4a596572201d81dd7df91f70e177e19a70f1d489968b54b5fbbf29a97c076",
"LC_ALL=zh_CN.UTF-8",
"LANGUAGE=zh_CN:zh",
"PYTHONIOENCODING=utf-8"
],
"Cmd": [
"python",
"app.py"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/opt/xiaozhi-esp32-server",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 6940199970,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/a8d1f8be81deeffca07b7538d2da6ff62d76090571240d635f1bb0fc2a83e63f/diff:/var/lib/docker/overlay2/3524184a5977daaf3216d045f0c97d9c457077c058b5b196857c283e037342e5/diff:/var/lib/docker/overlay2/35bb44e42c01a59249b5dada0652e843a13a60adf11f373a88fcbd7d5914da43/diff:/var/lib/docker/overlay2/53da0488a9b273057ad864b596ad74ea733ad410c23f5bdf423d8978005619f1/diff:/var/lib/docker/overlay2/06977ddba98daa8eeea08d16f3adde0e6655948312bd5f47483e2805f4fabce0/diff:/var/lib/docker/overlay2/bee0e1250c65524cc4979128518a6aa710ddf478a4a276a8e723bc8f4b59278c/diff:/var/lib/docker/overlay2/207c002e503794da1bf73e04d8a72a57cadf7bf4c32b26e7138d9b82e6d05c99/diff:/var/lib/docker/overlay2/05d443e31d56d8d85b99680b5506f707bc0d5b5b12c9e6dfe998ce8b275004fc/diff:/var/lib/docker/overlay2/63f0368c20ad1ac6086cccf2d114b55e8db5252ec21b33c67d9b11a42617c63d/diff",
"MergedDir": "/var/lib/docker/overlay2/76a7e1fc3c466bcb0df58e8dc266bb57a97e87bf44278191f44b788ff4392267/merged",
"UpperDir": "/var/lib/docker/overlay2/76a7e1fc3c466bcb0df58e8dc266bb57a97e87bf44278191f44b788ff4392267/diff",
"WorkDir": "/var/lib/docker/overlay2/76a7e1fc3c466bcb0df58e8dc266bb57a97e87bf44278191f44b788ff4392267/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:a8ff6f8cbdfd6741c10dd183560df7212db666db046768b0f05bbc3904515f03",
"sha256:2cb59db770d1f6effb101fc55403bb95ceb34b1030c1824563629ffccb844d2d",
"sha256:9f0194fcc39bb2ad5321adb6572e4e994c869a73d253c21ab646fad38f9bbb80",
"sha256:bb2cb0bd60778591c66b6d46870578bcaed91a827ad6b5dd8fad4f763a094bcf",
"sha256:49b2d87bbf781f4c36cb21c322a06034e1e5717dc3702a5dd2100c07c98e02fa",
"sha256:16e9828d00e5781949a5fc01dd65da078306109f9e6053ab6678d78605a56b49",
"sha256:4714cc5e73d75d8032b7e444ce747127106f4022b099e03bf42b4367c57a743d",
"sha256:cfa8e9f27309ed031c14b521918bdf5a62e84ce55cbe73f6d2bcd849842d8424",
"sha256:bee98fcdc256d70a3f4bc11442ea3982ca7ecee8e610fca277a3ca0a2483608d",
"sha256:bf5bfa94b02a1ef3848130f956ae5f3e463385c70ab2d2b6d378ff9c6cd60435"
]
},
"Metadata": {
"LastTagTime": "2026-02-20T00:19:35.050186954+08:00"
}
}