镜像构建历史
# 2025-11-10 00:16:36 0.00B 声明容器运行时监听的端口
EXPOSE [5001/tcp 5002/tcp]
# 2025-11-10 00:16:36 580.00B 复制新文件或目录到容器中
COPY conf/supervisord.app.conf /etc/supervisor/conf.d/supervisord.conf # buildkit
# 2025-11-10 00:16:36 0.00B 设置默认要执行的命令
CMD ["/usr/bin/supervisord" "-c" "/etc/supervisor/conf.d/supervisord.conf"]
# 2025-11-10 00:16:36 2.33KB 复制新文件或目录到容器中
COPY conf/prompt_templates.yml ./conf/prompt_templates.yml # buildkit
# 2025-11-10 00:16:36 20.11KB 复制新文件或目录到容器中
COPY ui.py ./ui.py # buildkit
# 2025-11-10 00:16:36 8.60KB 复制新文件或目录到容器中
COPY api.py ./api.py # buildkit
# 2025-11-10 00:16:36 8.33MB 复制新文件或目录到容器中
COPY fonts ./fonts # buildkit
# 2025-11-10 00:16:36 130.20KB 复制新文件或目录到容器中
COPY biz ./biz # buildkit
# 2025-11-10 00:16:36 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c mkdir -p log data conf # buildkit
# 2025-11-10 00:16:36 533.41MB 执行命令并创建新的镜像层
RUN /bin/sh -c pip install --no-cache-dir -r requirements.txt # buildkit
# 2025-11-10 00:15:58 344.00B 复制新文件或目录到容器中
COPY requirements.txt . # buildkit
# 2025-11-10 00:15:58 39.92MB 执行命令并创建新的镜像层
RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends supervisor && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-11-10 00:15:51 0.00B 设置工作目录为/app
WORKDIR /app
# 2025-11-04 12:29:12 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2025-11-04 12:29:12 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
# 2025-11-04 12:29:11 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
# 2025-11-04 12:23:16 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=c8f4a596572201d81dd7df91f70e177e19a70f1d489968b54b5fbbf29a97c076
# 2025-11-04 12:23:16 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.10.19
# 2025-11-04 12:23:16 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
# 2025-11-04 12:23:16 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
# 2025-11-04 12:23:16 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2025-11-04 12:23:16 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2025-11-04 04:44:10 78.62MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1762202650'
镜像信息
{
"Id": "sha256:2d4513d6f7125d6610061ccd69139634e312db3480fbe7841c0f6ede0b1feb35",
"RepoTags": [
"ghcr.io/sunmh207/ai-codereview-gitlab:1.3.15",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/sunmh207/ai-codereview-gitlab:1.3.15"
],
"RepoDigests": [
"ghcr.io/sunmh207/ai-codereview-gitlab@sha256:c60bbc8b1c72fdb824168dcb6b6ef090f9bdb62b873a2885fe07c85ed38df80c",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/sunmh207/ai-codereview-gitlab@sha256:4100cdff2af2ef9817e65c4aea0ebb7358ca910715dc9e98b8be5e29b1a885ff"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-11-09T16:16:36.39686882Z",
"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.19",
"PYTHON_SHA256=c8f4a596572201d81dd7df91f70e177e19a70f1d489968b54b5fbbf29a97c076"
],
"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": "2025-11-09T16:15:46.318Z",
"org.opencontainers.image.description": "基于大模型(DeepSeek,OpenAI等)的 GitLab 自动代码审查工具;支持钉钉/企业微信/飞书推送消息和生成日报;支持Docker部署;可视化 Dashboard。",
"org.opencontainers.image.licenses": "Apache-2.0",
"org.opencontainers.image.revision": "8b8398adea871acded0c402ca2ed26457b8b5544",
"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.3.15"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 703682029,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/7858f3a626be068c8dc985e33fe4a577cfa745a86ea1c7e730b2b7ed70b28dc2/diff:/var/lib/docker/overlay2/b1f4780da7ca16748629d9f220a01db839cb153a6536d1951eda15e536d1fcbf/diff:/var/lib/docker/overlay2/a47fb992d4c8b5eae3c287e9605b36896d61fd3bd079a8fe166130ccfad15dd7/diff:/var/lib/docker/overlay2/3b18beb309f3888be15ecc346357bc04a8291d99b04b4081a4f0e05691ed95c3/diff:/var/lib/docker/overlay2/b979262834d1945181b95aee16e9740f65e0c1f1073f34691568c0db26a268dd/diff:/var/lib/docker/overlay2/d7495ffb8ba37da3fa564d8d98e80f6748684d6adfc1b82bd9209f73e51c8c16/diff:/var/lib/docker/overlay2/0836407f2d503fe9ded009dc9fa76293fe315d36c4d176ce43b94655c16f6eca/diff:/var/lib/docker/overlay2/efd89a3f0879c8016fefc8353108780d2abf935c9b0ad22ad1daa0ba70625a37/diff:/var/lib/docker/overlay2/0895686d3121cd35ea7289ddf9cf6552f558497e0c78cc82ab225ad4ba5dea11/diff:/var/lib/docker/overlay2/43b21b2bc8d530b012685d8c870af1e7a0ea099a96a5d853f9e052f16cbc40ff/diff:/var/lib/docker/overlay2/5f366e29ceb183be064cf8c30b5669a0ad8e6b7f6f1fbf94e217acfb4dae022f/diff:/var/lib/docker/overlay2/47bda8f6c23e6e7cf628f2fa1e68a43b5a0e59f2f170431494a3b927466d23de/diff:/var/lib/docker/overlay2/022169d5642a5a2400408608e1fea0861785f62c595e5d7d060b06a9238ad8c5/diff:/var/lib/docker/overlay2/22d292e6dc58948dc9044964d5989d6c4ac7d14cc1ccc5cde67d9d89411e5b74/diff",
"MergedDir": "/var/lib/docker/overlay2/280b8202a46bc9df0aa78811442ba8e033af84d086de23613504fd102093ba9f/merged",
"UpperDir": "/var/lib/docker/overlay2/280b8202a46bc9df0aa78811442ba8e033af84d086de23613504fd102093ba9f/diff",
"WorkDir": "/var/lib/docker/overlay2/280b8202a46bc9df0aa78811442ba8e033af84d086de23613504fd102093ba9f/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:36d06fe0cbc654e5f67d58c960ed33e53127e4a3288d8ce6f6a60a9c311794d4",
"sha256:4a473d4e66d3e2e742610d318dcfcd1ba3d1b62ab104235a8a6959b1006b56c0",
"sha256:fae086a4d080fc14573260fbd72917997c26232c11fa297d9cebc6690e1c907f",
"sha256:c8d27dfd5c2e00a22ce07560891353c4bc039a01b9dfb92f660e044acbdec999",
"sha256:d0dfc4c6f2dd5bc7cc7aecba328b43855c114ce5d4d0b16653e1145fab7de7ac",
"sha256:b288b804ed7ff02e979c6196aa202db0407558dea217129f4d15c4e7a4bae1e4",
"sha256:a2d91e372ae101a33e263817b57935a1a9df3a5749559023cccf772ef9c579f4",
"sha256:0c24cb3e21fda074d6cd537c3d809a10b122c2320cff447d5aef03b08d937eb4",
"sha256:aadbf5ff29c560acee9a980ad191a4294d2dd8be890288226c1450bd4aa86b5b",
"sha256:56b85aafbb6bbd52a8af6ce786251e6b2567860f6310ff20dbc7646c8cdd4d98",
"sha256:9403ec14e61838f337afac3a0d51467f68d9e07837f84702f5125fa99287ca25",
"sha256:44745f5c1f2fb242ae28fbc412c1587a832865c71a4702dd1831ee23f8bfd5bd",
"sha256:d8ea812c92b5f4d79dea4da3690f8604f20d8ebf8ac0f5c04d54bbfd741f5bd4",
"sha256:aa7be7efa41acba7116c2de4525a3b7ba9a02a4c60131f89612a298ab1f1b2b2",
"sha256:de5e063568b7194b0c4bf16ff5269db52bc01e080400d0f3ff4ccf4b0fff6b0d"
]
},
"Metadata": {
"LastTagTime": "2025-12-18T11:27:10.555005367+08:00"
}
}