镜像构建历史
# 2026-09-11 15:44:05 252.03KB 执行命令并创建新的镜像层
RUN |1 BUILD_VERSION=jesserockz-2026-658 /bin/bash -o pipefail -c uv pip install --no-cache-dir -e /esphome # buildkit
# 2026-09-11 15:44:00 22.86MB 复制新文件或目录到容器中
COPY . /esphome # buildkit
# 2026-09-11 15:44:00 0.00B 设置默认要执行的命令
CMD ["dashboard" "/config"]
# 2026-09-11 15:44:00 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/entrypoint.sh"]
# 2026-09-11 15:44:00 0.00B 设置工作目录为/config
WORKDIR /config
# 2026-09-11 15:44:00 0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/config]
# 2026-09-11 15:44:00 1.66KB 复制新文件或目录到容器中
COPY docker/docker_entrypoint.sh /entrypoint.sh # buildkit
# 2026-09-11 15:44:00 0.00B 指定检查容器健康状态的命令
HEALTHCHECK {Test:[CMD-SHELL curl --fail http://localhost:6052/version -A "HealthCheck" || exit 1] Interval:30s Timeout:30s StartPeriod:0s StartInterval:0s Retries:0}
# 2026-09-11 15:44:00 0.00B 声明容器运行时监听的端口
EXPOSE [6052/tcp]
# 2026-09-11 15:44:00 0.00B 添加元数据标签
LABEL org.opencontainers.image.authors=The ESPHome Authors org.opencontainers.image.title=ESPHome org.opencontainers.image.description=ESPHome is a system to configure your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems org.opencontainers.image.url=https://esphome.io/ org.opencontainers.image.documentation=https://esphome.io/ org.opencontainers.image.source=https://github.com/esphome/esphome org.opencontainers.image.licenses=ESPHome org.opencontainers.image.version=jesserockz-2026-658
# 2026-09-11 15:44:00 0.00B 定义构建参数
ARG BUILD_VERSION=jesserockz-2026-658
# 2026-09-11 15:44:00 187.56MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c /platformio_install_deps.py /platformio.ini --libraries # buildkit
# 2026-09-11 15:43:10 37.02KB 复制新文件或目录到容器中
COPY script/platformio_install_deps.py platformio.ini / # buildkit
# 2026-09-11 15:43:10 2.92MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c platformio settings set enable_telemetry No && platformio settings set check_platformio_interval 1000000 && mkdir -p /piolibs # buildkit
# 2026-09-11 15:43:09 92.36MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c uv pip install --no-cache-dir esphome-device-builder==1.14.6 # buildkit
# 2026-09-11 15:43:07 103.46MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c uv pip install --no-cache-dir -r /requirements.txt # buildkit
# 2026-09-11 15:43:04 1.30KB 复制新文件或目录到容器中
COPY requirements.txt / # buildkit
# 2026-09-11 15:43:04 71.21MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c pip install --no-cache-dir -U pip uv==0.10.1 # buildkit
# 2026-09-11 15:43:04 0.00B 设置环境变量 PIP_DISABLE_PIP_VERSION_CHECK
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
# 2026-09-11 15:43:00 53.00B 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c git config --system --add safe.directory "*" && git config --system advice.detachedHead false # buildkit
# 2026-06-24 04:47:25 0.00B 设置环境变量 PIP_ROOT_USER_ACTION
ENV PIP_ROOT_USER_ACTION=ignore
# 2026-06-24 04:47:25 0.00B 设置环境变量 UV_SYSTEM_PYTHON
ENV UV_SYSTEM_PYTHON=true
# 2026-06-24 04:47:25 4.27KB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c usermod -U root -a -G staff # buildkit
# 2026-06-24 04:47:24 384.18MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c set -x && apt update && apt install -y --no-install-recommends iputils-ping=3:20240905-3 git=1:2.47.3-0+deb13u1 curl=8.14.1-2+deb13u3 openssh-client=1:10.0p1-7+deb13u4 libcairo2=1.18.4-1+b1 libmagic1t64=1:5.46-5 patch=2.8-2 build-essential=12.12 libusb-1.0-0=2:1.0.28-1 ccache=4.11.2-2 && apt purge -y --auto-remove && rm -rf /tmp/* /var/{cache,log}/* /var/lib/apt/lists/* /usr/src/* # buildkit
# 2026-06-24 04:47:24 0.00B
SHELL [/bin/bash -o pipefail -c]
# 2026-06-11 09:07:14 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-06-11 09:07:14 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:07:14 36.86MB 执行命令并创建新的镜像层
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 libzstd-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 -; 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 08:59:09 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=143b1dddefaec3bd2e21e3b839b34a2b7fb9842272883c576420d605e9f30c63
# 2026-06-11 08:59:09 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.14.6
# 2026-06-11 08:59:09 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 08:59:09 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:5c88a10fab29827994bb6515c181f26d48446a9df3ef40a48d9b2ad1f9cf8106",
"RepoTags": [
"ghcr.io/esphome/esphome:jesserockz-2026-658",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/esphome/esphome:jesserockz-2026-658"
],
"RepoDigests": [
"ghcr.io/esphome/esphome@sha256:6c6f43c181f3d682f430d21837fbbddc2bb4089a9bf27acc6abe48fd11a9612b",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/esphome/esphome@sha256:08363d23bb9c060e64d9de952e8b2b25318019b265ea9e31ce4e89cdef43d6c5"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-09-11T07:44:05.276300592Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"6052/tcp": {}
},
"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.6",
"PYTHON_SHA256=143b1dddefaec3bd2e21e3b839b34a2b7fb9842272883c576420d605e9f30c63",
"UV_SYSTEM_PYTHON=true",
"PIP_ROOT_USER_ACTION=ignore",
"PIP_DISABLE_PIP_VERSION_CHECK=1"
],
"Cmd": [
"dashboard",
"/config"
],
"Healthcheck": {
"Test": [
"CMD-SHELL",
"curl --fail http://localhost:6052/version -A \"HealthCheck\" || exit 1"
],
"Interval": 30000000000,
"Timeout": 30000000000
},
"ArgsEscaped": true,
"Image": "",
"Volumes": {
"/config": {}
},
"WorkingDir": "/config",
"Entrypoint": [
"/entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"org.opencontainers.image.authors": "The ESPHome Authors",
"org.opencontainers.image.description": "ESPHome is a system to configure your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems",
"org.opencontainers.image.documentation": "https://esphome.io/",
"org.opencontainers.image.licenses": "ESPHome",
"org.opencontainers.image.source": "https://github.com/esphome/esphome",
"org.opencontainers.image.title": "ESPHome",
"org.opencontainers.image.url": "https://esphome.io/",
"org.opencontainers.image.version": "jesserockz-2026-658"
},
"Shell": [
"/bin/bash",
"-o",
"pipefail",
"-c"
]
},
"Architecture": "amd64",
"Os": "linux",
"Size": 984148959,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/4ef4a9b32c372c4b553f6f48230e085c0ca095b1d3e7545d551327d78cfbd4ed/diff:/var/lib/docker/overlay2/0bbc7cf65773d2ff5cb5730c9a5803c143b549b46bb14ea2696ca4d8ba60fa4f/diff:/var/lib/docker/overlay2/124bc3dedc49b596192b9233ddc4c2ed8b9b4ecbf81d89950e37cc4acaf8f75e/diff:/var/lib/docker/overlay2/be0f0af94d7a4b438ae55f5a056906b1f54e7af4d5c113820a619f325032405a/diff:/var/lib/docker/overlay2/a4ddfe5f3f47e7db6dc21225af6dc5d692061d8598f6b711b2f7e41723fea639/diff:/var/lib/docker/overlay2/ae40407f8fcb7a53143146581776b0eb97e5b8554d151a3cee338d768dc74432/diff:/var/lib/docker/overlay2/20034395dbcdcd819ee56f81e0e01efbbc83d47f7367c66375e329f73b1fefbb/diff:/var/lib/docker/overlay2/1a68387a0a22d3409fd792dc574fcacb779faa38b58bd5466048091360d31d42/diff:/var/lib/docker/overlay2/14637c43744138f7de7da18c63827a94af5ebe28c12f4f61707f72a644f53b37/diff:/var/lib/docker/overlay2/9052b12556a45b10dc829cf3fdaff46abf6d6bb4ad9507d9c094c9cdc779aa90/diff:/var/lib/docker/overlay2/82617e78121887d23c033b3e2c69683d2319126b0052543128c9acd2908c5b90/diff:/var/lib/docker/overlay2/7dd0b9d691565ea3348adf854ac877bfbb029de74e44d106fdde8ba1426a6734/diff:/var/lib/docker/overlay2/51316418c1e29af851a9444d5d808bb107d7ab4331c8e82bf0a9f9309caa838d/diff:/var/lib/docker/overlay2/5cf82730d381bcb171a539e39da027727489b5208634f45678af686bde540076/diff:/var/lib/docker/overlay2/a84d8354634baf1ef790393fde00d9318309a506e1eb4e8920c08274ed9d0bdc/diff:/var/lib/docker/overlay2/48ae6fe6e8169148b510584661db55f04381204ceac8dedbf5b2704e24848cc4/diff:/var/lib/docker/overlay2/27b08b949736d7c981639b69fe98f239c4e43d81a2a4ec3f848fc6a9636982f8/diff",
"MergedDir": "/var/lib/docker/overlay2/19594d8fb0637327df1a72c7434035be81fdd7317c7cc187e7cdcc8cb0e19d26/merged",
"UpperDir": "/var/lib/docker/overlay2/19594d8fb0637327df1a72c7434035be81fdd7317c7cc187e7cdcc8cb0e19d26/diff",
"WorkDir": "/var/lib/docker/overlay2/19594d8fb0637327df1a72c7434035be81fdd7317c7cc187e7cdcc8cb0e19d26/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:f4f8b983b714f130e2cff99176baa26352db6a55d3622e10ada40f2b4720a4eb",
"sha256:15b737c8fcc548a9ebf67691aa20f1d8a94d7f96520fdbf04cbaaca3820ef24c",
"sha256:6c1b18b00539fcd0d4d40879dcc060548e23404d7dc9e62c121043aa7463c2f4",
"sha256:620f6ef2b0ff8d0dec6704db367244924a3bfc96d00990c983b9f9009619866e",
"sha256:1baf0e8a56ad714dd99e93972ea4495894e1f7febd7a333590b15f0bf8a26dcb",
"sha256:c01b476b1afc04da1a5ee8f912ea474acf4f3791560bb7297ba7282946216e62",
"sha256:0793b86222bc42bb447cdf65f9c11097df36218d3828bc76ada2373429482323",
"sha256:de72aba9809734f8dd5dc7a11f38b3270fd068f3d2a616d3e87784a42214290c",
"sha256:d2b3bf06cd9c959f25e38760c7c6b65c723e7fc6052abaa6bc14dc5fc97be40a",
"sha256:92e0db69d77fcd41421f87c8e38787f418fb60d7c2238aa8217f725251858985",
"sha256:0c6a3e54cddfaf790be298bc99c0b78fd655f1cac5523a1d8970e75598a9a3b0",
"sha256:526da5e6fc750847619ba7a4bd42759ab944c33e563958d85981ed3374746eac",
"sha256:d51176cdcfee8cd40445a59d0ef22e29beac21cf7d6d2d5c715fed07658cd3da",
"sha256:3adb819f6078e516d018ce908d11a2aded4f8250de35e26be815e70e884288b2",
"sha256:5a41dcd0fbcf142412efd16080dfe4c12ba855f078583975e86e58b0c922bea9",
"sha256:63d0798528942282852ce52c7d24b716b1980dac668b57bb843922c9ccb5c652",
"sha256:7af978a09460fe8481e6ad94028600cd1647d4404982401500dffcec3053b124",
"sha256:243b278ffe88e3855854403e79a269e298829d6d53a6f463f8fb4704a08bfbca"
]
},
"Metadata": {
"LastTagTime": "2026-09-11T16:04:37.559316714+08:00"
}
}