镜像构建历史
# 2026-06-26 10:31:40 0.00B 设置默认要执行的命令
CMD ["/usr/bin/supervisord" "-c" "/etc/supervisor/conf.d/supervisord.conf"]
# 2026-06-26 10:31:40 0.00B 声明容器运行时监听的端口
EXPOSE [5001/tcp 5002/tcp]
# 2026-06-26 10:31:40 580.00B 复制新文件或目录到容器中
COPY conf/supervisord.conf /etc/supervisor/conf.d/supervisord.conf # buildkit
# 2026-06-26 10:31:40 3.89KB 复制新文件或目录到容器中
COPY conf/prompt_templates.yml ./conf/prompt_templates.yml # buildkit
# 2026-06-26 10:31:40 24.07KB 复制新文件或目录到容器中
COPY ui.py ./ui.py # buildkit
# 2026-06-26 10:31:40 564.00B 复制新文件或目录到容器中
COPY api.py ./api.py # buildkit
# 2026-06-26 10:31:40 8.33MB 复制新文件或目录到容器中
COPY fonts ./fonts # buildkit
# 2026-06-26 10:31:40 219.27KB 复制新文件或目录到容器中
COPY biz ./biz # buildkit
# 2026-06-26 10:31:40 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c mkdir -p log data conf # buildkit
# 2026-06-26 10:31:40 552.63MB 执行命令并创建新的镜像层
RUN /bin/sh -c pip install --no-cache-dir -r requirements.txt # buildkit
# 2026-06-26 10:30:59 404.00B 复制新文件或目录到容器中
COPY requirements.txt . # buildkit
# 2026-06-26 10:30:59 153.61MB 执行命令并创建新的镜像层
RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends supervisor git ca-certificates ripgrep tree file && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-06-26 10:30:49 0.00B 设置工作目录为/app
WORKDIR /app
# 2026-06-24 10:11:28 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-06-24 10:11:28 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-24 10:11:27 39.45MB 执行命令并创建新的镜像层
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-06-24 10:05:33 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=de6517421601e39a9a3bc3e1bc4c7b2f239297423ee05e282598c83ec0647505
# 2026-06-24 10:05:33 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.10.20
# 2026-06-24 10:05:33 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
# 2026-06-24 10:05:33 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-24 10:05:33 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-06-24 10:05:33 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-06-23 08:00:00 78.63MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1782172800'
镜像信息
{
"Id": "sha256:77c9fe426bfaa8ffb27732e1aa15b1d96391326f5e25ebc4b5515748afb3d8e5",
"RepoTags": [
"ghcr.io/sunmh207/ai-codereview-gitlab:1.5.1",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/sunmh207/ai-codereview-gitlab:1.5.1"
],
"RepoDigests": [
"ghcr.io/sunmh207/ai-codereview-gitlab@sha256:c9aa711a96f8a9161398085d212051d7d05374217f3d4347b8eef6f32387d06d",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/sunmh207/ai-codereview-gitlab@sha256:f79675cf7d546abe860e5df01a1be6068410e1e57b41f562fdcd49ed07b12048"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-06-26T02:31:40.632441373Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"5001/tcp": {},
"5002/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=C.UTF-8",
"GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D",
"PYTHON_VERSION=3.10.20",
"PYTHON_SHA256=de6517421601e39a9a3bc3e1bc4c7b2f239297423ee05e282598c83ec0647505"
],
"Cmd": [
"/usr/bin/supervisord",
"-c",
"/etc/supervisor/conf.d/supervisord.conf"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.opencontainers.image.created": "2026-06-26T02:30:45.577Z",
"org.opencontainers.image.description": "基于大模型(DeepSeek,OpenAI等)的 GitLab 自动代码审查工具;支持钉钉/企业微信/飞书推送消息和生成日报;支持Docker部署;可视化 Dashboard。",
"org.opencontainers.image.licenses": "Apache-2.0",
"org.opencontainers.image.revision": "ad45e876c461eee5d8169c36771a37f94a1bcb00",
"org.opencontainers.image.source": "https://github.com/sunmh207/AI-Codereview-Gitlab",
"org.opencontainers.image.title": "AI-Codereview-Gitlab",
"org.opencontainers.image.url": "https://github.com/sunmh207/AI-Codereview-Gitlab",
"org.opencontainers.image.version": "1.5.1"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 836699263,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/d672df1f57b4c4d0f58bffe8365ede215ee6324958790b8f92d76320fffe981f/diff:/var/lib/docker/overlay2/b2c5fb31132f6b07a24d999f44322c2ddae2162ac86b6a12aabd8c279e5549dc/diff:/var/lib/docker/overlay2/841b596c0830252c892a6b8770bba99efb4e635bcdf71c4fe335078a01a44b01/diff:/var/lib/docker/overlay2/c7a70f850a36bc0b0691e25849900cfb2ec497c7721f6bcf44c939c7baa354d5/diff:/var/lib/docker/overlay2/76d1821cb6ba3650af37733cd0c60ab4a6669d2046d149797b83799d9a6dd157/diff:/var/lib/docker/overlay2/b71e2356e6b873eba05a7c87b9cec2f0b81420025049b76261836a9c6e60cdc4/diff:/var/lib/docker/overlay2/271ce80bcff678afc77e84931358df31d4533545b6938d040cdea558a30f1473/diff:/var/lib/docker/overlay2/2c13758fe6f78d62e3834fb737c43eb19890abb6fd8a168efc980feead6b12fe/diff:/var/lib/docker/overlay2/4f7b21b4a819f7130c8b28c58b310dc1b872dc5044f32c87a147877d86578fb2/diff:/var/lib/docker/overlay2/2bf96507c0d188a8896f6cb0f1233ba5661da4b92b12a449f9ec9cbef631292e/diff:/var/lib/docker/overlay2/e859c3a5c073dd07df730dd5aac2cfffae45508c618532d28138099d1003ccdb/diff:/var/lib/docker/overlay2/1c9c7cc5ad1518d32806d61d73798195beeb54617aa0e1e4b60b08519ea81282/diff:/var/lib/docker/overlay2/863d0a9507913db4a3d649a260f4dd00e247886f85c6930cc83769eb05591142/diff:/var/lib/docker/overlay2/bffec9fc28460581aa542b709e827851355a8211e101a93c595213985203ea1a/diff",
"MergedDir": "/var/lib/docker/overlay2/a0ad5ad48da48967f462a7addeae2858b5f4e575a2d320dc63064ec22382825d/merged",
"UpperDir": "/var/lib/docker/overlay2/a0ad5ad48da48967f462a7addeae2858b5f4e575a2d320dc63064ec22382825d/diff",
"WorkDir": "/var/lib/docker/overlay2/a0ad5ad48da48967f462a7addeae2858b5f4e575a2d320dc63064ec22382825d/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:3edb2192497af6e965b9b7e57dc6dbdce1f3ea721d14a98110419d4ded523298",
"sha256:885844d4dc445372343b8152b8cb7fffc4def1c6b078719036737a92e9d2fc81",
"sha256:ae72a32bbf9b3ca9cf0da885e532aed482c750a24d8649f86da2fe78a8996da0",
"sha256:40bf8446ec16e62953d669d9470b2d82d14d439a66cb698c69598ffbc4dc46aa",
"sha256:824670bdbd4713f283865ebf7d2a38248c50162df30e4f464c986120f0cd08b5",
"sha256:5af52885c04acfe12b551b541ffcbcd8f85df21eff3bbe22850512f8315ed144",
"sha256:9051d633916958303f1a59d5477a2c7b8706592f1e0c86f7a267181f85b9ea00",
"sha256:03c428615c0122215db561d92150233abfc8fa272fee1d5eb92939823af82946",
"sha256:9a1c9adde914366784f20f05b6b5080a33b45d36de6e68689196b14ce1bb6114",
"sha256:e0594a30ced69f70ba4927e740eb6fcf5d97540f4b65fcb4c9bc6accada61090",
"sha256:f0940da98b15837b31f2d84bd0bf92e0a2affb7a9377df04750357f5f369e6f0",
"sha256:23a0d8436be1e724f81e6bb79b76a15909c7ad34e9a0b721cdefc3639f48d7fa",
"sha256:377bbe522f2048396c37aa6b373fe1c7aed2f1c2e8953034940f198e7b1b438c",
"sha256:3b2227c2cfc6976982c17f7cc18ab7335b55a6eaae1d1fb72f722311444bca2a",
"sha256:b4d9e584573daf4fc664927227a4b330819754b65c1b31c891dffb3c301422be"
]
},
"Metadata": {
"LastTagTime": "2026-07-08T18:01:34.58997398+08:00"
}
}