镜像构建历史
# 2026-04-28 22:20:05 0.00B 设置默认要执行的命令
CMD ["node" "/usr/src/app/dist/index.js" "--no-onboarding"]
# 2026-04-28 22:20:05 1.79MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c npm run build # buildkit
# 2026-04-28 22:20:02 1.10MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c fc-cache -f && mkdir -p /etc/matplotlib && printf '%s\n' 'font.family: sans-serif' 'font.sans-serif: Noto Sans CJK SC, WenQuanYi Zen Hei, DejaVu Sans' > /etc/matplotlib/matplotlibrc # buildkit
# 2026-04-28 22:19:59 20.32KB 复制新文件或目录到容器中
COPY deeppresenter/docker/improved-process-tools.ts src/tools/improved-process-tools.ts # buildkit
# 2026-04-28 22:19:59 27.10KB 复制新文件或目录到容器中
COPY deeppresenter/docker/server.ts src/server.ts # buildkit
# 2026-04-28 22:19:59 395.00B 复制新文件或目录到容器中
COPY deeppresenter/docker/config.json /root/.claude-server-commander/config.json # buildkit
# 2026-04-28 22:19:59 510.43MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c uv venv --python 3.13 $VIRTUAL_ENV && uv pip install pip python-pptx matplotlib seaborn plotly numpy pandas opencv-python-headless pillow # buildkit
# 2026-04-28 22:19:53 647.49MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c npm install --ignore-scripts && npm install -g @mermaid-js/mermaid-cli pptxgenjs playwright sharp # buildkit
# 2026-04-28 22:19:28 55.49MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c git clone https://github.com/wonderwhy-er/DesktopCommanderMCP.git . && git checkout 252a00d624c2adc5707fa743c57a1b68bc223689 && rm -rf .git # buildkit
# 2026-04-28 22:19:25 2.29KB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c printenv | grep -E '^(PATH|PYTHONUNBUFFERED|VIRTUAL_ENV|PUPPETEER_|LANG|LC_ALL|MPLCONFIGDIR|MCP_CLIENT_DOCKER)=' | sed 's/^/export /' > /etc/profile.d/docker-env.sh && echo 'source /etc/profile.d/docker-env.sh' >> /etc/bash.bashrc # buildkit
# 2026-04-28 22:19:25 0.00B 设置环境变量 PATH PYTHONUNBUFFERED VIRTUAL_ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD PUPPETEER_EXECUTABLE_PATH LANG LC_ALL MPLCONFIGDIR MCP_CLIENT_DOCKER
ENV PATH=/opt/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PYTHONUNBUFFERED=1 VIRTUAL_ENV=/opt/.venv PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 MPLCONFIGDIR=/etc/matplotlib MCP_CLIENT_DOCKER=true
# 2026-04-28 22:19:25 53.00B 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c echo '{"args":["--no-sandbox","--disable-setuid-sandbox"]}' > /root/.puppeteerrc.json # buildkit
# 2026-04-28 22:19:25 0.00B 设置工作目录为/usr/src/app
WORKDIR /usr/src/app
# 2026-04-28 22:19:24 811.05MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c npm install --prefix deeppresenter/html2pptx --ignore-scripts && npm exec --prefix deeppresenter/html2pptx playwright install chromium && npm install --prefix /root/.cache/deeppresenter/html2pptx fast-glob minimist pptxgenjs playwright sharp # buildkit
# 2026-04-28 22:19:01 153.64MB 复制新文件或目录到容器中
COPY . . # buildkit
# 2026-04-28 22:19:01 0.00B 设置工作目录为/usr/src/pptagent
WORKDIR /usr/src/pptagent
# 2026-04-28 22:19:01 1.19GB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c apt-get update && apt-get install -y --fix-missing --no-install-recommends chromium fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libcups2 libdbus-1-3 libdrm2 libgbm1 libgtk-3-0 libnspr4 libnss3 libx11-xcb1 libxcomposite1 libxdamage1 libxrandr2 xdg-utils fonts-dejavu fonts-noto fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-color-emoji fonts-freefont-ttf fonts-urw-base35 fonts-roboto fonts-wqy-zenhei fonts-wqy-microhei fonts-arphic-ukai fonts-arphic-uming fonts-ipafont fonts-ipaexfont fonts-comic-neue imagemagick # buildkit
# 2026-04-28 22:18:24 3.06MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen # buildkit
# 2026-04-28 22:18:24 0.00B
SHELL [/bin/bash -o pipefail -c]
# 2026-04-28 22:18:23 418.26MB 执行命令并创建新的镜像层
RUN /bin/sh -c apt-get update && apt-get install -y --fix-missing --no-install-recommends ca-certificates && update-ca-certificates && apt-get install -y --no-install-recommends git bash curl wget unzip ripgrep vim sudo g++ locales # buildkit
# 2026-04-28 22:18:08 58.32MB 复制新文件或目录到容器中
COPY /uv /uvx /bin/ # buildkit
# 2026-04-22 09:45:16 0.00B 设置默认要执行的命令
CMD ["node"]
# 2026-04-22 09:45:16 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["docker-entrypoint.sh"]
# 2026-04-22 09:45:16 388.00B 复制新文件或目录到容器中
COPY docker-entrypoint.sh /usr/local/bin/ # buildkit
# 2026-04-22 09:45:16 7.18MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -ex && savedAptMark="$(apt-mark showmanual)" && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr --no-install-recommends && rm -rf /var/lib/apt/lists/* && export GNUPGHOME="$(mktemp -d)" && for key in 6A010C5166006599AA17F08146C2130DFD2497F5 ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && gpgconf --kill all && rm -rf "$GNUPGHOME" && mkdir -p /opt && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && apt-mark auto '.*' > /dev/null && { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; } && find /usr/local -type f -executable -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && yarn --version && rm -rf /tmp/* # buildkit
# 2026-04-22 09:45:04 0.00B 设置环境变量 YARN_VERSION
ENV YARN_VERSION=1.22.22
# 2026-04-22 09:45:04 142.41MB 执行命令并创建新的镜像层
RUN /bin/sh -c ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" && case "${dpkgArch##*-}" in amd64) ARCH='x64' OPENSSL_ARCH='linux-x86_64';; ppc64el) ARCH='ppc64le' OPENSSL_ARCH='linux-ppc64le';; s390x) ARCH='s390x' OPENSSL_ARCH='linux*-s390x';; arm64) ARCH='arm64' OPENSSL_ARCH='linux-aarch64';; armhf) ARCH='armv7l' OPENSSL_ARCH='linux-armv4';; i386) ARCH='x86' OPENSSL_ARCH='linux-elf';; *) echo "unsupported architecture"; exit 1 ;; esac && set -ex && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends && rm -rf /var/lib/apt/lists/* && export GNUPGHOME="$(mktemp -d)" && for key in 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 CC68F5A3106FF448322E48ED27F5E38D5B0A215F 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C 108F52B48DB57BB0CC439B2997B01419BD92F80A A363A499291CBBC940DD62E41F10027AF002F8B0 ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && gpgconf --kill all && rm -rf "$GNUPGHOME" && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; && apt-mark auto '.*' > /dev/null && find /usr/local -type f -executable -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && ln -s /usr/local/bin/node /usr/local/bin/nodejs && node --version && npm --version && rm -rf /tmp/* # buildkit
# 2026-04-22 09:45:04 0.00B 设置环境变量 NODE_VERSION
ENV NODE_VERSION=24.15.0
# 2026-04-22 09:44:44 8.90KB 执行命令并创建新的镜像层
RUN /bin/sh -c groupadd --gid 1000 node && useradd --uid 1000 --gid node --shell /bin/bash --create-home node # buildkit
# 2026-04-21 08:00:00 74.83MB
# debian.sh --arch 'amd64' out/ 'bookworm' '@1776729600'
镜像信息
{
"Id": "sha256:7e5447996742b4954b80143455fb30e7ce295f06b9f480d80f4c966cf69551e1",
"RepoTags": [
"forceless/deeppresenter-sandbox:v1.1.37",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/forceless/deeppresenter-sandbox:v1.1.37"
],
"RepoDigests": [
"forceless/deeppresenter-sandbox@sha256:f63551e5ee04a32c485e79f2705a2ab65fc6053f5d89e4c74ce4df2cd9fed9fa",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/forceless/deeppresenter-sandbox@sha256:54a8216bf239a35d6e021de5e60f7ccca7207301696814d72e37f0819b679a55"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-04-28T14:20:05.679285557Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/opt/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=24.15.0",
"YARN_VERSION=1.22.22",
"PYTHONUNBUFFERED=1",
"VIRTUAL_ENV=/opt/.venv",
"PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true",
"PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium",
"LANG=en_US.UTF-8",
"LC_ALL=en_US.UTF-8",
"MPLCONFIGDIR=/etc/matplotlib",
"MCP_CLIENT_DOCKER=true"
],
"Cmd": [
"node",
"/usr/src/app/dist/index.js",
"--no-onboarding"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/usr/src/app",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"org.opencontainers.image.created": "2026-04-28T14:17:52.781Z",
"org.opencontainers.image.description": "An Agentic Framework for Reflective PowerPoint Generation",
"org.opencontainers.image.licenses": "MIT",
"org.opencontainers.image.revision": "6a633f4f37e5c3cc1e5c1bcdf6808ccdf6db7ed8",
"org.opencontainers.image.source": "https://github.com/icip-cas/PPTAgent",
"org.opencontainers.image.title": "PPTAgent",
"org.opencontainers.image.url": "https://github.com/icip-cas/PPTAgent",
"org.opencontainers.image.version": "v1.1.37"
},
"Shell": [
"/bin/bash",
"-o",
"pipefail",
"-c"
]
},
"Architecture": "amd64",
"Os": "linux",
"Size": 4079141866,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/19a3ed6c123cf352270e9ca05b9408871322da1e27092a8103ac378bcdd666df/diff:/var/lib/docker/overlay2/8640196b3ac97f9430baed6bcd65685649bdddf4fa45537c571c17e7c7b50feb/diff:/var/lib/docker/overlay2/163dcb4d18771cf0a88fd4c9a9e0424bf228d7767f02e37c50b71fd46a96912f/diff:/var/lib/docker/overlay2/4a8c364120c8f524fba7b247e0445689b18e57c6ee531ef18d05854baa45c67f/diff:/var/lib/docker/overlay2/2cd66e0d312cdade5430c667d7c20c95f1ae1ec34461b48d22cc2476d7c55ddc/diff:/var/lib/docker/overlay2/24971e417981b23c2b8cede11ffde9cc873bb9cf2efc1e98498575f3aacde6a5/diff:/var/lib/docker/overlay2/f370f2472ea241a9a330ad5c41a5ada90834b5e65e6f37f9dff5579bf108986f/diff:/var/lib/docker/overlay2/5a0a0e5c10a516a1714797f8466448ba54db459fe5d559f99f1320cbf4132660/diff:/var/lib/docker/overlay2/2c00c3b92196becf47bd5434ded4b06f62102ae23fe18fc4fb5d9a9a025e8a05/diff:/var/lib/docker/overlay2/fa0dec0b6f139342bbbdb277096f98fc672fc0ee873bdca29f3d55dccf8ff2f1/diff:/var/lib/docker/overlay2/e13e6e1cb0e86977c96b590617fee0e2cca03c512119be7a2313c9b93b6d5d9b/diff:/var/lib/docker/overlay2/c5ee6389e36c80db9750f3349123c06b8f3f79aa1ecec613348453f9948bc786/diff:/var/lib/docker/overlay2/5d0a9416070c525326231ed5cf6b9b1854f917328046a9d213b2a217a2db45a2/diff:/var/lib/docker/overlay2/720f00570444bba48f05e02b3ec45bf6a547af8d3b28a643c3b930d67c363a73/diff:/var/lib/docker/overlay2/82ca913ac8baf85dbf618679279b14dd793f17ddbb898b43cd08a90f7437fc81/diff:/var/lib/docker/overlay2/0b1c0566af740afb3a183c438a0f95ef91a8b62fbd3de77fe1bff8f2bd9f5283/diff:/var/lib/docker/overlay2/d076fb5ba482218e7a2631a37d9db4f49eb6720306a1829b294449dc17273cd4/diff:/var/lib/docker/overlay2/325ecf985e1e8e514972eb7644580b6ade7dee2780c8ef43955b2e01ac495446/diff:/var/lib/docker/overlay2/c181e982fea780e87f31e249d4a4e53f082f7dfe6cf2d139c957bee00223b8f3/diff:/var/lib/docker/overlay2/269c88e2011fb235a6d2a1ccdd42cb9bc0311db0b3a1595a2a8e4c9a29af06dd/diff:/var/lib/docker/overlay2/dbcea44b1dac105d9cec64580a462d4624f7226daeb202901351527558f79b43/diff:/var/lib/docker/overlay2/d8c0bb0895b5ef2613374242f24e28ae9e22501a71d59618df0066b1c6af576f/diff",
"MergedDir": "/var/lib/docker/overlay2/624dd66288e06ac33baf471fda4be7defd5289c20cd7cc4867cd2c2377c4325a/merged",
"UpperDir": "/var/lib/docker/overlay2/624dd66288e06ac33baf471fda4be7defd5289c20cd7cc4867cd2c2377c4325a/diff",
"WorkDir": "/var/lib/docker/overlay2/624dd66288e06ac33baf471fda4be7defd5289c20cd7cc4867cd2c2377c4325a/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:0da811fd3ed46c38cea69079fa395a3d715dbdbdd5c8177107c450bf6332bbfa",
"sha256:f3acebbb468b503ce159dde3464e53ff7eb473cc15429c509848e0259c6f17bf",
"sha256:03af33aeca69b4a905bd061d94b4a52f9dd91ef829c18c8faeeba19ef5f58ea4",
"sha256:1902da1c0d0c0feca6750a6ed1d9fc772a87e3781d2e223224ffbb685e308209",
"sha256:468b56b01885098a7083d9c9bf62a801bba1b862caaf8ba0139f3c68e15d7cb4",
"sha256:5e5e362c458399c314b011277222617ffdefd172d9cbcd53e193cea1340521a1",
"sha256:cc64a762289bc52ecd70e3cd59498787ec3dad6641a84ba075d0b6cf05d01e9e",
"sha256:9cbfaed9643bd1c686d401a8977631326785444c5a565c9a29525be0d8e67cda",
"sha256:c9bae8ccf46870fd921fffc8a5cbfb0425ee0f5f64e552d0688e640fa5f80936",
"sha256:68ff601c3251b53e9b15279b2dfff6edd15b316dd3e6ce595ea4a74a17562478",
"sha256:16ae935fea3e6d0e9b46273e7ef193e308b5e6cc9d16a0f2ec9f804601f7fe0e",
"sha256:fe6ecc5f2d56068a56230df80aeb7d9e65ceb859e0c479ceae2138472f532170",
"sha256:5df9fbbac63a09e9bbea56314cc723c82b1d28a6b33927f4fa1ce1d3809312ad",
"sha256:cc6a30cb316a84e97f82dcbda5c6462c45d14c2d65254e6416702b48a87b37e5",
"sha256:407f3cfabf5885ec68459096fb06fc3e118c7e246c5dc8e94d0e58089cf515c1",
"sha256:f3b1400624a30443ea974eb52dfd171a32bc4cb95d3a07f8d14d8c73ad634283",
"sha256:bdbc77acf3d190c39644f0d320b364fcce0ef9a27380ca3f74114141cf19b146",
"sha256:a293b636f6225141a8c1695542f9af7872dabb3a626bf37e77c6272353fd2b14",
"sha256:9657db8dcfa1331c774afeb000adad2bb9592437432bf69596e4126b4cca7fee",
"sha256:2a495b7c3a3b9b3a7e4345e9e5189b747f30dbc3110fbfcbad67d1aec65e2c2f",
"sha256:16916d056cd8de5440ed0fb6abcb0c80a31c0ade6aa37043e51318381b353ea8",
"sha256:02290d2f214e3e330b42e50505e01c3e8b0d6f57dca2e23645748a7d06fc46bc",
"sha256:68de226f0880a8b1496fe46f5c76e1a98c4384037114c39bed9a7d45f50c9e78"
]
},
"Metadata": {
"LastTagTime": "2026-06-29T13:40:08.402690529+08:00"
}
}