镜像构建历史
# 2026-06-03 01:49:48 0.00B 设置默认要执行的命令
CMD ["worker"]
# 2026-06-03 01:49:48 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["launchpad"]
# 2026-06-03 01:49:48 0.00B 设置环境变量 LAUNCHPAD_VERSION_SHA
ENV LAUNCHPAD_VERSION_SHA=
# 2026-06-03 01:49:48 0.00B 定义构建参数
ARG LAUNCHPAD_VERSION_SHA
# 2026-06-03 01:49:48 0.00B 指定运行容器时使用的用户
USER app
# 2026-06-03 01:49:48 5.47MB 执行命令并创建新的镜像层
RUN |1 TEST_BUILD=false /bin/sh -c chown -R app:app /app # buildkit
# 2026-06-03 01:49:48 191.85MB 执行命令并创建新的镜像层
RUN |1 TEST_BUILD=false /bin/sh -c python scripts/deps --install --local-architecture=x86_64 --local-system=linux && rm -rf /app/.devenv # buildkit
# 2026-06-03 01:49:37 21.15KB 执行命令并创建新的镜像层
RUN |1 TEST_BUILD=false /bin/sh -c pip install -e . # buildkit
# 2026-06-03 01:49:29 0.00B 执行命令并创建新的镜像层
RUN |1 TEST_BUILD=false /bin/sh -c if [ "$TEST_BUILD" = "true" ]; then echo "Test build detected - including test fixtures"; else echo "Production build - excluding test fixtures"; rm -rf tests/_fixtures; fi # buildkit
# 2026-06-03 01:49:29 45.52KB 执行命令并创建新的镜像层
RUN |1 TEST_BUILD=false /bin/sh -c echo "4cd01dd28294a3ebeff031d6ba947aee1c2dd9c402f504f9866eec302466b11d /app/scripts/strip/dist/strip" | sha256sum -c - && echo "05b2cbe0786aab0e2ffba665a6fe2303d2a9e2e77ac8b18cfc015dffe2c2d3f7 /app/scripts/strip/dist/ld" | sha256sum -c - && chmod +x /app/scripts/strip/dist/strip /app/scripts/strip/dist/ld && ln -sf /usr/lib/x86_64-linux-gnu/libBlocksRuntime.so.0 /usr/lib/x86_64-linux-gnu/libBlocksRuntime.so && ldconfig # buildkit
# 2026-06-03 01:49:29 0.00B 复制新文件或目录到容器中
COPY scripts/strip/dist/strip scripts/strip/dist/ld /app/scripts/strip/dist/ # buildkit
# 2026-06-03 01:49:29 629.43KB 复制新文件或目录到容器中
COPY /usr/lib/x86_64-linux-gnu/libdispatch.so* /usr/lib/x86_64-linux-gnu/ # buildkit
# 2026-06-03 01:49:29 3.79KB 复制新文件或目录到容器中
COPY LICENSE . # buildkit
# 2026-06-03 01:49:29 4.25KB 复制新文件或目录到容器中
COPY README.md . # buildkit
# 2026-06-03 01:49:29 2.61KB 复制新文件或目录到容器中
COPY pyproject.toml . # buildkit
# 2026-06-03 01:49:29 1.44KB 复制新文件或目录到容器中
COPY devservices/ ./devservices/ # buildkit
# 2026-06-03 01:49:29 4.13MB 复制新文件或目录到容器中
COPY scripts/ ./scripts/ # buildkit
# 2026-06-03 01:49:29 89.95MB 复制新文件或目录到容器中
COPY tests/ ./tests/ # buildkit
# 2026-06-03 01:49:29 846.00KB 复制新文件或目录到容器中
COPY src/ ./src/ # buildkit
# 2026-06-03 01:49:29 187.06MB 执行命令并创建新的镜像层
RUN |1 TEST_BUILD=false /bin/sh -c if [ "$TEST_BUILD" = "true" ]; then pip install --no-cache-dir -r requirements.txt -r requirements-dev.txt; else pip install --no-cache-dir -r requirements.txt; fi # buildkit
# 2026-06-03 01:49:08 861.00B 复制新文件或目录到容器中
COPY requirements.txt requirements-dev.txt ./ # buildkit
# 2026-06-03 01:49:08 0.00B 设置工作目录为/app
WORKDIR /app
# 2026-06-03 01:49:08 987.27MB 执行命令并创建新的镜像层
RUN |1 TEST_BUILD=false /bin/sh -c apt-get update && apt-get install -y --no-install-recommends curl git build-essential openjdk-17-jre-headless unzip zip file libbsd0 liblzma5 zlib1g libblocksruntime0 ffmpeg && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-06-03 01:48:37 8.89KB 执行命令并创建新的镜像层
RUN |1 TEST_BUILD=false /bin/sh -c groupadd --gid 1000 app && useradd --uid 1000 --gid app --shell /bin/bash --create-home app # buildkit
# 2026-06-03 01:48:37 0.00B 设置环境变量 PYTHONUNBUFFERED PYTHONDONTWRITEBYTECODE PIP_NO_CACHE_DIR PIP_DISABLE_PIP_VERSION_CHECK
ENV PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1 PIP_NO_CACHE_DIR=1 PIP_DISABLE_PIP_VERSION_CHECK=1
# 2026-06-03 01:48:37 0.00B 定义构建参数
ARG TEST_BUILD=false
# 2026-05-20 07:52:25 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-05-20 07:52:25 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-05-20 07:52:24 38.04MB 执行命令并创建新的镜像层
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; rm -rf /var/lib/apt/lists/*; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit
# 2026-05-20 07:40:02 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=7e32597b99e5d9a39abed35de4693fa169df3e5850d4c334337ffd6a19a36db6
# 2026-05-20 07:40:02 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.14.5
# 2026-05-20 07:40:02 9.26MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; rm -rf /var/lib/apt/lists/* # buildkit
# 2026-05-20 07:40:02 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-05-18 08:00:00 74.83MB
# debian.sh --arch 'amd64' out/ 'bookworm' '@1779062400'
镜像信息
{
"Id": "sha256:67548105ea86c424ce510a6d595553d3fe4e1c927f4aaec4926f3866d3b5ec80",
"RepoTags": [
"ghcr.io/getsentry/launchpad:26.5.2",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/getsentry/launchpad:26.5.2"
],
"RepoDigests": [
"ghcr.io/getsentry/launchpad@sha256:da4df47d6d459c177d574259b12a48b94835c831cc5c2b3f3323fab7ca1c81ae",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/getsentry/launchpad@sha256:54534f4b8f92e094137132d592f5d58db0ade19c7942e22ad4f35f1992604a6a"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-06-02T17:49:48.555155727Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "app",
"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",
"PYTHON_VERSION=3.14.5",
"PYTHON_SHA256=7e32597b99e5d9a39abed35de4693fa169df3e5850d4c334337ffd6a19a36db6",
"PYTHONUNBUFFERED=1",
"PYTHONDONTWRITEBYTECODE=1",
"PIP_NO_CACHE_DIR=1",
"PIP_DISABLE_PIP_VERSION_CHECK=1",
"LAUNCHPAD_VERSION_SHA="
],
"Cmd": [
"worker"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": [
"launchpad"
],
"OnBuild": null,
"Labels": {
"org.opencontainers.image.created": "2026-06-02T17:48:31.410Z",
"org.opencontainers.image.description": "",
"org.opencontainers.image.licenses": "NOASSERTION",
"org.opencontainers.image.revision": "bc574f44feaabe88868ac710211847fd1af86ada",
"org.opencontainers.image.source": "https://github.com/getsentry/launchpad",
"org.opencontainers.image.title": "launchpad",
"org.opencontainers.image.url": "https://github.com/getsentry/launchpad",
"org.opencontainers.image.vendor": "\"Sentry\"",
"org.opencontainers.image.version": "bc574f44feaabe88868ac710211847fd1af86ada"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1589407108,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/22d8f1ffa3e830f196040e9f670ccde917b887a7ca39096f799f9c58b1902040/diff:/var/lib/docker/overlay2/2f55ce018f8915a8ffa581157a0608364ce1596e241aa790747c34f233e1c283/diff:/var/lib/docker/overlay2/3e7d41cdd1ead08c440feb7e1d920f24b9c6a129381ebc3596105eae803cc504/diff:/var/lib/docker/overlay2/9de4700b4e388a7b6a201e9d8224e46359753f479329ce00826ca1ca3534fae4/diff:/var/lib/docker/overlay2/38b4a26062300af007ee78535af35ca91d286cf82fe4b54aafa2c0486f94ab92/diff:/var/lib/docker/overlay2/b124dec1bea4bb4ee893e789a728b1b985282a91e1e0e342f12b6e72faa47c08/diff:/var/lib/docker/overlay2/e019944eca6a503a7f17d97145ce33191028413c0ec045f7081e6eff44a90a38/diff:/var/lib/docker/overlay2/18a8456095c2ab731b04b5081fbeb09bb4ee2c35a55d4a0e3434bd8f6befc591/diff:/var/lib/docker/overlay2/3ea43032fc62f8ca5f39ad9ea32b1bca5697a2f05a8f92118af749fb5855051e/diff:/var/lib/docker/overlay2/90c2803a08f0062684b428051e465c4f9b8171e649386304ff3a896c112c310a/diff:/var/lib/docker/overlay2/10f5e46dd1cc1f4a65c6459d5f2a262d765b1d86fb77c819753211fe84e3e9f6/diff:/var/lib/docker/overlay2/c1f7619c995a8b57d337c8a413b5894485a1759cdef4ff088e29681485dc4cb1/diff:/var/lib/docker/overlay2/a243e66f7e776398172677f95a894dd506e937434c641a44c1a566841cc5df6d/diff:/var/lib/docker/overlay2/f0562b3b6ce25e6125841739e307d5e3a3b891117f6b3458528b15c6498b22bb/diff:/var/lib/docker/overlay2/52be0097ca6877e9484da593bfc3ee036f2f44c7af3a8cb4bfdaaa7b21b35b26/diff:/var/lib/docker/overlay2/67e6a6f9d2c8e5900a6e642f08eaba35e8af02b116bdf13125496259c5f32acd/diff:/var/lib/docker/overlay2/2d1822d40db8fee2da1e268a4e1bae8c95a44afcf99be9a006ae2f84a732279f/diff:/var/lib/docker/overlay2/cbb92d3e1c00e59ada643f389f84230466a75067cc9e0728559736cdf35cec48/diff:/var/lib/docker/overlay2/f6791d9f43f6bbcc07999601cd69e8feffe9d3f0b74ad77e5a7c422ab742de94/diff:/var/lib/docker/overlay2/b7f71ca5e7af7d753693de8d8ed47c2168817dc5abcc78ec3620a9b0eaf6a527/diff:/var/lib/docker/overlay2/ec0464ad5a859a97880d3db38f27eceb21de3351eb8d8d5d87dd6fd1e2380221/diff:/var/lib/docker/overlay2/5e9845753b4d798d364800e960e05caddf8266510bb181283cfb5803b7a14e6b/diff",
"MergedDir": "/var/lib/docker/overlay2/45a601d7064125a7dc5d7857db5d2d2dea044a8f25725897ec46bac0684d676f/merged",
"UpperDir": "/var/lib/docker/overlay2/45a601d7064125a7dc5d7857db5d2d2dea044a8f25725897ec46bac0684d676f/diff",
"WorkDir": "/var/lib/docker/overlay2/45a601d7064125a7dc5d7857db5d2d2dea044a8f25725897ec46bac0684d676f/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:b2008ac19409fa6fee4b52596271400498aebd0be04dffac5351bd1dcf230f2a",
"sha256:312028695cc18fa0e4922377836b5e2175e33ab9a177b0e68d4655b654d830e0",
"sha256:572e54b7dce0fb3e6948e82fd5b02b1f0230189225dda3aa85146bf0026e9fad",
"sha256:16ce9bdbd19bbaaba62c4e4e84a8126a567d70150311420402b7f0c15b4efbab",
"sha256:153c56319ed096bd158ee276a6da4cb208e1bff603e94ab2f00584a63f8598e0",
"sha256:6bf9961b18b3f194af4924229952369dc07b40c1ceb12013197e3f8f2536b87a",
"sha256:e975e7f7f6cae7d142e9669c560a6482ed5fe67794062a34da6a1cadf84e0ee4",
"sha256:023d654614b2f8022cf3133af11a968449d0b686e4d8fbe07eb077e3ad40cdc1",
"sha256:4ae31eff5419ba75156559dae40ec617f895ee919c1445d97f9462e6e22dfd77",
"sha256:7f5a8a72cb7b19aedf8ab13c268b928138b075481772ba933d1158d5c431bc08",
"sha256:12058497b668d2b3e806d9cff328c2f6435abefad167d3bf0aa778c530dfcdf7",
"sha256:4e88c17987a6b1721a0fac52838ee2a7479beae38d7d476a52a91600bc09e15b",
"sha256:b27d7e4044abe86eb78f0895b95aa0f807a0dd9426362f9a154c1bb2e2ae5cab",
"sha256:a376e0b33608cec56496d5661de1f38db175ca0f98b259da30e5521cc85394e2",
"sha256:7865c4354bc6f07c474a82b4477c20933ba7a5a53b3cda1b99a910a66097a291",
"sha256:18b5d976ea36d7778515b761825a7e7767fcfb7df9ae76253284a158bea6dd67",
"sha256:16505ef35e36e795cd9828d8f7e30802be71d3999200699c538c8a04d5f581c7",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:4d15ecc194c9257a35a9626cae68aaac6b054d869a5f47353b65f9a18280cc0c",
"sha256:7a180223731353d2db9e6ad53aef13b98a8d463f6de5fd3c4715fa6004e4a587",
"sha256:bbb2d73bc9494fd29cbc170bf51a6cc049830e6c8b91402296dd9b3b2e806bd0",
"sha256:601c46ccd547a1f7fcf979a4425fe95592b5057bcf1636beb7841ce8505ee74c",
"sha256:1da350fd98804d39b0281602b993e180d67d8cc3c892bfe1836137ab1910fa30"
]
},
"Metadata": {
"LastTagTime": "2026-06-03T15:37:37.795509847+08:00"
}
}