镜像构建历史
# 2026-08-20 09:29:59 0.00B 设置默认要执行的命令
CMD ["./scripts/run.sh"]
# 2026-08-20 09:29:59 222.95MB 执行命令并创建新的镜像层
RUN |1 TAG=self-hosted-v19.3.0-ee /bin/sh -c poetry run index_docs -o "./tmp/docs.db" -v ${TAG##self-hosted-} # buildkit
# 2026-08-20 09:29:32 0.00B 设置环境变量 LANGSMITH_TRACING_V2
ENV LANGSMITH_TRACING_V2=false
# 2026-08-20 09:29:32 0.00B 设置环境变量 ENABLE_DUO_WORKFLOW_SERVICE
ENV ENABLE_DUO_WORKFLOW_SERVICE=true
# 2026-08-20 09:29:32 0.00B 设置环境变量 HF_HUB_OFFLINE
ENV HF_HUB_OFFLINE=true
# 2026-08-20 09:29:32 0.00B 设置环境变量 TRANSFORMERS_NO_ADVISORY_WARNINGS
ENV TRANSFORMERS_NO_ADVISORY_WARNINGS=1
# 2026-08-20 09:29:32 0.00B 设置环境变量 AIGW_FASTAPI__DOCS_URL
ENV AIGW_FASTAPI__DOCS_URL=/docs
# 2026-08-20 09:29:32 0.00B 设置环境变量 AIGW_FASTAPI__OPENAPI_URL
ENV AIGW_FASTAPI__OPENAPI_URL=/openapi.json
# 2026-08-20 09:29:32 0.00B 设置环境变量 AIGW_FASTAPI__API_PORT
ENV AIGW_FASTAPI__API_PORT=5052
# 2026-08-20 09:29:32 0.00B 设置环境变量 AIGW_CUSTOM_MODELS__ENABLED
ENV AIGW_CUSTOM_MODELS__ENABLED=true
# 2026-08-20 09:29:32 0.00B 执行命令并创建新的镜像层
RUN |1 TAG=self-hosted-v19.3.0-ee /bin/sh -c mkdir "tmp" # buildkit
# 2026-08-20 09:29:32 0.00B 定义构建参数
ARG TAG=self-hosted-v19.3.0-ee
# 2026-08-20 09:26:58 0.00B 设置默认要执行的命令
CMD ["./scripts/run.sh"]
# 2026-08-20 09:26:58 0.00B 声明容器运行时监听的端口
EXPOSE [5052/tcp]
# 2026-08-20 09:26:58 2.11MB 执行命令并创建新的镜像层
RUN /bin/sh -c poetry run fetch-foundational-agents "https://gitlab.com" "$GITLAB_API_TOKEN" "duo_planner:348,security_analyst_agent:356,ci_expert_agent:1004583,onboarding_guide:1003979" --flow-registry-version v1 # buildkit
# 2026-08-20 09:26:37 4.84MB 执行命令并创建新的镜像层
RUN /bin/sh -c poetry run python scripts/bootstrap.py # buildkit
# 2026-08-20 09:26:21 1.39GB 复制新文件或目录到容器中
COPY --chown=aigateway:aigateway /home/aigateway/app/venv/ /home/aigateway/app/venv/ # buildkit
# 2026-08-20 09:24:34 0.00B 指定运行容器时使用的用户
USER aigateway
# 2026-08-20 09:24:34 5.14MB 执行命令并创建新的镜像层
RUN /bin/sh -c chown -R aigateway:aigateway /home/aigateway/ # buildkit
# 2026-08-20 09:24:29 4.38KB 执行命令并创建新的镜像层
RUN /bin/sh -c useradd aigateway # buildkit
# 2026-08-20 09:24:29 67.83MB 执行命令并创建新的镜像层
RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends parallel curl && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-08-20 09:24:17 74.60KB 复制新文件或目录到容器中
COPY vendor/ vendor/ # buildkit
# 2026-08-20 09:24:17 84.26KB 复制新文件或目录到容器中
COPY scripts/ scripts/ # buildkit
# 2026-08-20 09:24:17 95.32KB 复制新文件或目录到容器中
COPY contract/ contract/ # buildkit
# 2026-08-20 09:24:17 117.75KB 复制新文件或目录到容器中
COPY lib/ lib/ # buildkit
# 2026-08-20 09:24:17 2.41MB 复制新文件或目录到容器中
COPY duo_workflow_service/ duo_workflow_service/ # buildkit
# 2026-08-20 09:24:17 1.60MB 复制新文件或目录到容器中
COPY ai_gateway/ ai_gateway/ # buildkit
# 2026-08-20 09:24:17 5.44KB 复制新文件或目录到容器中
COPY README.md README.md # buildkit
# 2026-08-20 09:24:17 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c mkdir -p -m 777 $POETRY_CONFIG_DIR $POETRY_DATA_DIR $POETRY_CACHE_DIR # buildkit
# 2026-08-20 09:24:17 75.46MB 执行命令并创建新的镜像层
RUN /bin/sh -c pip install "poetry==$POETRY_VERSION" # buildkit
# 2026-08-20 09:24:06 739.84KB 复制新文件或目录到容器中
COPY poetry.lock pyproject.toml ./ # buildkit
# 2026-08-20 09:24:06 0.00B 设置工作目录为/home/aigateway/app
WORKDIR /home/aigateway/app
# 2026-08-20 09:24:06 0.00B 设置环境变量 PYTHONUNBUFFERED HF_HOME PIP_NO_CACHE_DIR PIP_DISABLE_PIP_VERSION_CHECK POETRY_VERSION POETRY_VIRTUALENVS_PATH POETRY_CONFIG_DIR POETRY_DATA_DIR POETRY_CACHE_DIR
ENV PYTHONUNBUFFERED=1 HF_HOME=/home/aigateway/.hf PIP_NO_CACHE_DIR=1 PIP_DISABLE_PIP_VERSION_CHECK=1 POETRY_VERSION=2.4.1 POETRY_VIRTUALENVS_PATH=/home/aigateway/app/venv POETRY_CONFIG_DIR=/home/aigateway/app/.config/pypoetry POETRY_DATA_DIR=/home/aigateway/app/.local/share/pypoetry POETRY_CACHE_DIR=/home/aigateway/app/.cache/pypoetry
# 2026-08-05 09:12:35 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-08-05 09:12:35 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-08-05 09:12:35 36.78MB 执行命令并创建新的镜像层
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"; 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-08-05 09:04:15 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684
# 2026-08-05 09:04:15 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.12.13
# 2026-08-05 09:04:15 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
# 2026-08-05 09:04:15 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-08-05 09:04:15 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-08-05 09:04:15 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-08-03 08:00:00 78.62MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1785715200'
镜像信息
{
"Id": "sha256:e97003c29105f25eb2a40cfa75c1fc01e4a6a1cf1724b808767b132b921dac5a",
"RepoTags": [
"gitlab/model-gateway:self-hosted-v19.3.0-ee",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gitlab/model-gateway:self-hosted-v19.3.0-ee"
],
"RepoDigests": [
"gitlab/model-gateway@sha256:9a3fc1beb29e4e305b3f92fe467979fb3431b55dfea9e1215afe46df3e50f16f",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gitlab/model-gateway@sha256:9a3fc1beb29e4e305b3f92fe467979fb3431b55dfea9e1215afe46df3e50f16f"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-08-20T01:29:59.583961958Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "aigateway",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"5052/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=7169605F62C751356D054A26A821E680E5FA6305",
"PYTHON_VERSION=3.12.13",
"PYTHON_SHA256=c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684",
"PYTHONUNBUFFERED=1",
"HF_HOME=/home/aigateway/.hf",
"PIP_NO_CACHE_DIR=1",
"PIP_DISABLE_PIP_VERSION_CHECK=1",
"POETRY_VERSION=2.4.1",
"POETRY_VIRTUALENVS_PATH=/home/aigateway/app/venv",
"POETRY_CONFIG_DIR=/home/aigateway/app/.config/pypoetry",
"POETRY_DATA_DIR=/home/aigateway/app/.local/share/pypoetry",
"POETRY_CACHE_DIR=/home/aigateway/app/.cache/pypoetry",
"AIGW_CUSTOM_MODELS__ENABLED=true",
"AIGW_FASTAPI__API_PORT=5052",
"AIGW_FASTAPI__OPENAPI_URL=/openapi.json",
"AIGW_FASTAPI__DOCS_URL=/docs",
"TRANSFORMERS_NO_ADVISORY_WARNINGS=1",
"HF_HUB_OFFLINE=true",
"ENABLE_DUO_WORKFLOW_SERVICE=true",
"LANGSMITH_TRACING_V2=false"
],
"Cmd": [
"./scripts/run.sh"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/home/aigateway/app",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1891020939,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/00d68b9ce6b566d855b2ea981f7cbf44a9db414b4117b986bf83b3d21a093788/diff:/var/lib/docker/overlay2/c77dd8c73624a2af9053e71415a48175cbaf932cfb94559d8754b5fd31415b4b/diff:/var/lib/docker/overlay2/e994e479bc9b1fe7785d527c60343d7bfe7c4760389850b10b6f4d77920d0bda/diff:/var/lib/docker/overlay2/06824620b77fc11ad357ac486de3d7e6aba1d7b38706482de664bb913bbf7310/diff:/var/lib/docker/overlay2/2b45c20317d55054f0419f0bd1d83493fb5b00d2c915e33646f18b37b01db730/diff:/var/lib/docker/overlay2/e1c3fe9fd516a08d33c3bad4cdf09edcc69dfaff3d41fc58c6395ae955aa41fa/diff:/var/lib/docker/overlay2/74d74ff41f73cd71230ba5d88557fa4e690efeb53f286164a83a4902488d3832/diff:/var/lib/docker/overlay2/0d2248755a9c3c084e945e6173fc5ad6c1b627231c1fb5add7d20d8fbf0630bd/diff:/var/lib/docker/overlay2/9b5f27aa143e953b5f5b4417ac71fbfe79756719c1a701a4c01fe1b27fba3b97/diff:/var/lib/docker/overlay2/f4328f2d9bf1a275cd88aa8cab7d0f56993c182c95488491de206f2fabc597a5/diff:/var/lib/docker/overlay2/0641f5b1ec78f299c1fc5d194f84b943d58e977cdc7a845b0acee7c752faeba2/diff:/var/lib/docker/overlay2/0de7e20777b26f0477b75c40551e0ccc13e78fa05ef079d75cfbe23611dfdadd/diff:/var/lib/docker/overlay2/1a8dc606743b35ddc275c7656bddda83b9948273984892374edb1f96309946a6/diff:/var/lib/docker/overlay2/3e9fecff164f6d548e5559828fd6bb1402b4c00707ce2e0ebf37d60f69d5a0c3/diff:/var/lib/docker/overlay2/eff982ca22d302413ff21ebe6e2e74e84abd753d124c7ccc21f1f90893206b24/diff:/var/lib/docker/overlay2/ce84ee5c1b9b865a4c8ba0e65eb40a37e0aee5426af89233b4738b8c0bd73d2c/diff:/var/lib/docker/overlay2/5f9d35762d72efa93ee1cceaf48c6ba0120e73a462ef7d81c251cba4c613b77d/diff:/var/lib/docker/overlay2/7465ce3d65323524d52642b3a341e574207341271508dc506ff84808e8f06847/diff:/var/lib/docker/overlay2/b0ee4ab46aed5ddd7563461bde96b5f7e75ae151d9c78ce32c2900813de7044e/diff:/var/lib/docker/overlay2/1510a9e2505cd6da203f7593700868837c35e66bbc20e338aa311985051daf5c/diff:/var/lib/docker/overlay2/feca5b719be46310c63aa65dd0307b818ba25291cb094e527ec1ca03fefee177/diff:/var/lib/docker/overlay2/faff4113146787f7bb5a6ce2a00d7d8484098129ae09c7d0ce5acd028427696c/diff",
"MergedDir": "/var/lib/docker/overlay2/7d6008c194ddffd9c54d80c0cc7156d4eb6e2edbad805dd09c7745937ec03c7f/merged",
"UpperDir": "/var/lib/docker/overlay2/7d6008c194ddffd9c54d80c0cc7156d4eb6e2edbad805dd09c7745937ec03c7f/diff",
"WorkDir": "/var/lib/docker/overlay2/7d6008c194ddffd9c54d80c0cc7156d4eb6e2edbad805dd09c7745937ec03c7f/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:6f94328331290cbd81edab450664d42da7b64c191416c9346cd5d28c84f76035",
"sha256:eeece50a9eae41fbec657a77c3360a561685b2fc638dbb59c4f59be2e9deb502",
"sha256:4bdf3c4a59c868d57940d8a761f38ce2a7269959ff6d1fd5a0157a86f6dac082",
"sha256:02bea5b709fab77889748c8fe2fed5a41e60e418e70d6a91b5a4f9c85475b043",
"sha256:b46a9eb7a5870b66732d31b3b962558c56e19d8bc59e1d4df4b848c3de42b29a",
"sha256:c91f0135eeb434f0700c7e6fd222167ce38775ac8baf8a43ab466fd8c8265c1c",
"sha256:47ab83e60290f2eff5bc97c981f7d439a7b19b4933069f2563347c19a26fb068",
"sha256:ae980520154fbaeeb4bfa7094dd2eca356261f982f7e00aea10f47ff76e36d1f",
"sha256:5c814f7b2ff2a19e8b6d7a3d0a7ad68d00080e347d44fb20ee19dd37fc528319",
"sha256:c681796a97c1e446681d31be2a86921c72ca2d03dcdc7947a83b30f90170478c",
"sha256:ff03f25a2e1c9292f8a58aac6ad60ee5b148cbab35e503875d962230fa68e688",
"sha256:913da8a4ece99aa16d04ba5b432bcde9bfe6a02675598270db9dea41b0e1d9c0",
"sha256:20344678daf3569a97d842c5820593d072d7026b2a1c3ab3a22b8c8cb4a2e59b",
"sha256:7816554e1d351467a22590f278d0b112d1f13704346685cbe37c228889d33c1c",
"sha256:4f47452f025f64f13ba52164b44e3105d4972ce93bafca6e436ddc697759c368",
"sha256:33a9a9cdc84d745e791b77dbbd57f75fa692da8f28034d21d2bb136d3761fac3",
"sha256:6f8368bbd37eedb23b42d2caf450dc2aa05a785b3fbf575da5570f7663e0aab5",
"sha256:76792adf393cfc594d7776f567e5963e3ae4b664d19b1eec19ec6f677778248e",
"sha256:6a47077deb57791a5fc23b9944ef820516644b3805f367cea6f000e1bdbaf134",
"sha256:32be238581fa0bfed528fd7033b28a2f94143dfaaeb2d762678eeab5a368b52b",
"sha256:677a0887ca28adf6fcf9f190bbb662548b3fccea371d69fbd2747f0741dea1bb",
"sha256:f6d0a5ff06b81ccb8f852c9d7eb5a9eb1cd79eb4b1d8f67349abdefee6d32051",
"sha256:a0082e81bf3d5f3047c5f57ac4e1e85a659afdd02a45c4c5daa07414666983f3"
]
},
"Metadata": {
"LastTagTime": "2026-09-10T14:15:45.366221922+08:00"
}
}