镜像构建历史
# 2026-10-05 11:16:08 0.00B 设置默认要执行的命令
CMD ["serve"]
# 2026-10-05 11:16:08 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/app/backend/scripts/docker-entrypoint.sh"]
# 2026-10-05 11:16:08 0.00B 指定检查容器健康状态的命令
HEALTHCHECK {Test:[CMD-SHELL python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/api/health/ready', timeout=2).close()" || exit 1] Interval:30s Timeout:3s StartPeriod:1m0s StartInterval:0s Retries:3}
# 2026-10-05 11:16:08 0.00B 声明容器运行时监听的端口
EXPOSE [8000/tcp]
# 2026-10-05 11:16:08 236.31MB 执行命令并创建新的镜像层
RUN |5 DBMATE_VERSION=2.32.0 DBMATE_SHA256=3b92413ef9b7d9b86981a39f8d0dbbaf03e0a07fc8db256480db6ab55915a787 HELM_VERSION=3.17.3 HELM_SHA256=ee88b3c851ae6466a3de507f7be73fe94d54cbf2987cbaa3d1a3832ea331f2cd UV_VERSION=0.9.21 /bin/sh -c apk add --no-cache --virtual .build-deps gcc musl-dev libffi-dev curl && curl -fsSL -o /usr/local/bin/dbmate "https://github.com/amacneil/dbmate/releases/download/v${DBMATE_VERSION}/dbmate-linux-amd64" && echo "${DBMATE_SHA256} /usr/local/bin/dbmate" | sha256sum -c - && curl -fsSL -o /tmp/helm.tar.gz "https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz" && echo "${HELM_SHA256} /tmp/helm.tar.gz" | sha256sum -c - && tar -xz -C /tmp -f /tmp/helm.tar.gz && mv /tmp/linux-amd64/helm /usr/local/bin/helm && chmod +x /usr/local/bin/dbmate /usr/local/bin/helm && chmod +x /app/backend/scripts/docker-entrypoint.sh && pip install "uv==${UV_VERSION}" && uv sync --locked --no-dev && rm -rf /tmp/linux-amd64 /tmp/helm.tar.gz && apk del .build-deps # buildkit
# 2026-10-05 11:15:58 2.75MB 复制新文件或目录到容器中
COPY /app/frontend/dist ./static # buildkit
# 2026-10-05 11:15:46 4.81KB 复制新文件或目录到容器中
COPY backend/scripts ./scripts # buildkit
# 2026-10-05 11:15:46 52.65KB 复制新文件或目录到容器中
COPY backend/dbmate ./dbmate # buildkit
# 2026-10-05 11:15:46 2.23MB 复制新文件或目录到容器中
COPY backend/src ./src # buildkit
# 2026-10-04 22:43:54 243.54KB 复制新文件或目录到容器中
COPY backend/pyproject.toml backend/uv.lock ./ # buildkit
# 2026-10-04 22:43:54 0.00B 设置环境变量 PATH
ENV PATH=/app/backend/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-10-04 22:43:54 0.00B 设置环境变量 VIRTUAL_ENV
ENV VIRTUAL_ENV=/app/backend/.venv
# 2026-10-04 22:43:54 0.00B 定义构建参数
ARG UV_VERSION=0.9.21
# 2026-10-04 22:43:54 0.00B 定义构建参数
ARG HELM_SHA256=ee88b3c851ae6466a3de507f7be73fe94d54cbf2987cbaa3d1a3832ea331f2cd
# 2026-10-04 22:43:54 0.00B 定义构建参数
ARG HELM_VERSION=3.17.3
# 2026-10-04 22:43:54 0.00B 定义构建参数
ARG DBMATE_SHA256=3b92413ef9b7d9b86981a39f8d0dbbaf03e0a07fc8db256480db6ab55915a787
# 2026-10-04 22:43:54 0.00B 定义构建参数
ARG DBMATE_VERSION=2.32.0
# 2026-10-04 22:43:54 0.00B 设置工作目录为/app/backend
WORKDIR /app/backend
# 2026-10-04 22:43:54 0.00B 添加元数据标签
LABEL org.opencontainers.image.description=A lightweight, configurable release tracking and update orchestration tool org.opencontainers.image.authors=dalamudx
# 2026-10-02 05:49:27 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-10-02 05:49: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-10-02 05:49:26 45.82MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apk add --no-cache --virtual .build-deps bluez-dev bzip2-dev dpkg-dev dpkg findutils g++ gcc gdbm-dev gnupg libc-dev libffi-dev libnsl-dev libtirpc-dev linux-headers make ncurses-dev openssl-dev pax-utils readline-dev sqlite-dev tar tcl-dev tk tk-dev util-linux-dev xz xz-dev zlib-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-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="-DTHREAD_STACK_SIZE=0x100000"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(apk --print-arch)"; case "$arch" in x86_64|aarch64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; x86) ;; *) 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 '{}' + ; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' | tr ',' '\n' | sort -u | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' | xargs -rt apk add --no-network --virtual .python-rundeps ; apk del --no-network .build-deps; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit
# 2026-10-02 05:44:41 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a
# 2026-10-02 05:44:41 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.12.15
# 2026-10-02 05:44:41 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
# 2026-10-02 05:44:41 916.27KB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apk add --no-cache ca-certificates tzdata ; # buildkit
# 2026-10-02 05:44:41 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-10-02 05:44:41 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-09-18 04:37:20 0.00B 设置默认要执行的命令
CMD ["/bin/sh"]
# 2026-09-18 04:37:20 8.42MB 复制文件或目录到容器中
ADD alpine-minirootfs-3.24.2-x86_64.tar.gz / # buildkit
镜像信息
{
"Id": "sha256:9c5c18c1fbd4c3e6b3ec6e43ac072a3435812823d432b15b95cf84e8405e3776",
"RepoTags": [
"ghcr.io/dalamudx/releasetracker:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/dalamudx/releasetracker:latest"
],
"RepoDigests": [
"ghcr.io/dalamudx/releasetracker@sha256:4b0a8038922882e0d2b44ac3519ad3d3056467efc0823b3b84b6c88d236e4051",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/dalamudx/releasetracker@sha256:19bc912a2fbf385f6aed94f30caf66a337a87a7c81a5458a7852a2ec8e823285"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-10-05T03:16:08.661017113Z",
"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=/app/backend/.venv/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.15",
"PYTHON_SHA256=c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a",
"VIRTUAL_ENV=/app/backend/.venv"
],
"Cmd": [
"serve"
],
"Healthcheck": {
"Test": [
"CMD-SHELL",
"python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/api/health/ready', timeout=2).close()\" || exit 1"
],
"Interval": 30000000000,
"Timeout": 3000000000,
"StartPeriod": 60000000000,
"Retries": 3
},
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/app/backend",
"Entrypoint": [
"/app/backend/scripts/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"org.opencontainers.image.authors": "dalamudx",
"org.opencontainers.image.description": "A lightweight, configurable release tracking and update orchestration tool"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 296742150,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/0eecb5bab9d8713645aef9cacdc2b88e4962c07eb3941df4406c089b9f8923b2/diff:/var/lib/docker/overlay2/afb72dec52683255bdfa593d6644aa7d5f3dcc6c5a1b25f193002b52abd385e7/diff:/var/lib/docker/overlay2/118b35aeeed4f850f60ffcd88090b78a17b774b016b47077229c759fcbcc46e0/diff:/var/lib/docker/overlay2/6b1d3dda8979bbe92f11e18f2ddde858d315774ffaa8c5477d8d2c8de27ec29f/diff:/var/lib/docker/overlay2/4bbd7664f4bd23f2e2ef8d34a4b362032777d89207d931e24f8b87b2ed9baea5/diff:/var/lib/docker/overlay2/a2e17a7d464437c7b6ffd3acd1c0587293f354218cee2e552d1efd00a25bf013/diff:/var/lib/docker/overlay2/a78a6096ceb87af968f907d3ee2be0988d514a194e029de5236e6f96d9801a4d/diff:/var/lib/docker/overlay2/0333bda32240cde7a472103a6f3110d3de2db890fe2fff9efd58418225064412/diff:/var/lib/docker/overlay2/fcf5ec5dcb3323444facce62dead2531e16e6b36a2f2497e8593537981ad009f/diff:/var/lib/docker/overlay2/b7e5ef51ce780a37006b37512b37b3c0271e6d74abe35c7fa5736879409027ce/diff",
"MergedDir": "/var/lib/docker/overlay2/84595e7fbee67a78e64adbca5564f2b28ef06517298d95453da6a56ee669c8cc/merged",
"UpperDir": "/var/lib/docker/overlay2/84595e7fbee67a78e64adbca5564f2b28ef06517298d95453da6a56ee669c8cc/diff",
"WorkDir": "/var/lib/docker/overlay2/84595e7fbee67a78e64adbca5564f2b28ef06517298d95453da6a56ee669c8cc/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:74d97c428c51a828f9051a7a40a53ff1fc99e54fc30323ce36760701b0b7f711",
"sha256:41366f7f48797df937c15865e4a91a5de2822c369ca5155709f2d0ae3690be9b",
"sha256:7e9021171c2796d59b4f3190e9d4f4c8f702f2ebedaac6aa38e197237e68b3e8",
"sha256:4d211c3f1c45c08a83c284d1a2482ebf01c961dba549e9a3f7f877bb88d5fd60",
"sha256:cc9572d0b4c3b8dbdeb398aabf200a3eca3aaeedbdad858df6064a93031db41c",
"sha256:65004a3483a16771d3e348469b88bb17e86a9c0152fe9b89138ae56b0ca085bd",
"sha256:4dc806784b570dda109f36f27674f659b48bc7154fd67b2ffe062104a514dff7",
"sha256:bc5545b07d4dd6ae0ca7259ad6756e57b0a2cfe68ade1cb34894c3388c9c9325",
"sha256:7088818622df09ece1bc1c30ec5895a16fc4972d87acb5f50463f06cee91cad6",
"sha256:57045b21e64ca3f853bbe13fb23a35d91b3d5e645cb1d821b7e0697aafcef56b",
"sha256:f052b9422b66880370d57120e3407f6ea8773f25b0ba20025a319ae92d122e15"
]
},
"Metadata": {
"LastTagTime": "2026-10-13T17:03:59.747298323+08:00"
}
}