镜像构建历史
# 2025-06-10 20:52:08 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "node" "--loader=./dist/bootstrap.js" "./dist/main.js"]
# 2025-06-10 20:52:08 0.00B 指定运行容器时使用的用户
USER pptruser
# 2025-06-10 20:52:08 0.00B 设置环境变量 USER_DATA_DIR
ENV USER_DATA_DIR=/tmp/puppeteer
# 2025-06-10 20:52:08 0.00B 设置环境变量 CHROMIUM_EXECUTABLE_PATH
ENV CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome
# 2025-06-10 20:52:08 518.35MB 执行命令并创建新的镜像层
RUN |2 NODE_ENV=production CACHE_BUST=1 /bin/bash -o pipefail -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends wget && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/googlechrome-linux-keyring.gpg && sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/googlechrome-linux-keyring.gpg] https://dl-ssl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' && DEBIAN_FRONTEND=noninteractive apt-get remove -y wget && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends google-chrome-stable && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-06-10 20:51:36 0.00B 定义构建参数
ARG CACHE_BUST=1
# 2025-06-10 20:51:36 56.79MB 执行命令并创建新的镜像层
RUN |1 NODE_ENV=production /bin/bash -o pipefail -c groupadd -g 30000 -r pptruser && useradd -r -g pptruser -G audio,video -u 800 pptruser && mkdir -p /home/pptruser/Downloads && chown -R pptruser:pptruser /home/pptruser && chown -R pptruser:pptruser ./node_modules && chown -R pptruser:pptruser ./package.json # buildkit
# 2025-06-10 20:51:34 77.35MB 执行命令并创建新的镜像层
RUN |1 NODE_ENV=production /bin/bash -o pipefail -c PUPPETEER_SKIP_DOWNLOAD=true PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 yarn workspaces focus --production # buildkit
# 2025-06-10 20:51:26 0.00B 设置工作目录为/speckle-server/packages/preview-service
WORKDIR /speckle-server/packages/preview-service
# 2025-06-10 20:51:26 1.90MB 复制新文件或目录到容器中
COPY /speckle-server/packages/preview-frontend/dist ./preview-service/public # buildkit
# 2025-06-10 20:51:26 56.84MB 复制新文件或目录到容器中
COPY /speckle-server/packages/preview-service ./preview-service # buildkit
# 2025-06-10 20:51:26 4.93MB 复制新文件或目录到容器中
COPY /speckle-server/packages/shared ./shared # buildkit
# 2025-06-10 20:49:22 0.00B 设置工作目录为/speckle-server/packages
WORKDIR /speckle-server/packages
# 2025-06-10 20:49:22 1.79KB 复制新文件或目录到容器中
COPY packages/preview-service/package.json ./packages/preview-service/ # buildkit
# 2025-06-10 20:49:21 1.83MB 复制新文件或目录到容器中
COPY package.json yarn.lock ./ # buildkit
# 2025-06-10 20:49:21 2.75MB 复制新文件或目录到容器中
COPY .yarn ./.yarn # buildkit
# 2025-06-10 20:49:21 138.00B 复制新文件或目录到容器中
COPY .yarnrc.yml . # buildkit
# 2025-06-10 20:49:21 0.00B 设置工作目录为/speckle-server
WORKDIR /speckle-server
# 2025-06-10 20:49:21 0.00B 设置环境变量 NODE_ENV
ENV NODE_ENV=production
# 2025-06-10 20:49:21 0.00B 定义构建参数
ARG NODE_ENV=production
# 2025-06-10 20:49:21 11.17MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y gnupg=2.2.40-1.1 && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-06-10 20:49:12 62.07MB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates=20230311 tini=0.19.0-1 fonts-ipafont-gothic=00303-23 fonts-wqy-zenhei=0.9.45-8 fonts-thai-tlwg=1:0.7.3-1 fonts-kacst=2.01+mry-15 fonts-freefont-ttf=20120503-10 libxss1=1:1.2.3-1 libegl1=1.6.0-1 libxext6=2:1.3.4-1+b1 && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-06-10 20:49:12 0.00B
SHELL [/bin/bash -o pipefail -c]
# 2024-08-07 03:04:04 0.00B 设置默认要执行的命令
CMD ["node"]
# 2024-08-07 03:04:04 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["docker-entrypoint.sh"]
# 2024-08-07 03:04:04 388.00B 复制新文件或目录到容器中
COPY docker-entrypoint.sh /usr/local/bin/ # buildkit
# 2024-08-07 03:04:04 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 --keyserver keyserver.ubuntu.com --recv-keys "$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
# 2024-08-07 03:04:04 0.00B 设置环境变量 YARN_VERSION
ENV YARN_VERSION=1.22.22
# 2024-08-07 03:04:04 137.91MB 执行命令并创建新的镜像层
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 4ED778F539E3634C779C87C6D7062848A1AB005C 141F07595B7B3FFE74309A937405533BE57C7D57 74F12602B6F1C4E913FAA37AD3A89613643B6201 DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 61FC681DFB92A079F1685E77973F295594EC4689 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C 108F52B48DB57BB0CC439B2997B01419BD92F80A A363A499291CBBC940DD62E41F10027AF002F8B0 CC68F5A3106FF448322E48ED27F5E38D5B0A215F ; do gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$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 # buildkit
# 2024-08-07 03:04:04 0.00B 设置环境变量 NODE_VERSION
ENV NODE_VERSION=22.6.0
# 2024-08-07 03:04:04 8.90KB 执行命令并创建新的镜像层
RUN /bin/sh -c groupadd --gid 1000 node && useradd --uid 1000 --gid node --shell /bin/bash --create-home node # buildkit
# 2024-08-07 03:04:04 0.00B
/bin/sh -c #(nop) CMD ["bash"]
# 2024-08-07 03:04:04 74.78MB
/bin/sh -c #(nop) ADD file:3d9897cfe027ecc7cbdb16e74a676ed143725ea2d08dbb0dde23309e041de0f3 in /
镜像信息
{
"Id": "sha256:5dc1fb8c97d2c0335f47c294b181f7d2d5e1eafa44e8ea6e432742a7f6a272f7",
"RepoTags": [
"speckle/speckle-preview-service:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/speckle/speckle-preview-service:latest"
],
"RepoDigests": [
"speckle/speckle-preview-service@sha256:64fec526c49b475216fa80ff44491f77346ddc9aa500ea6d910fb5f945f8a4f9",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/speckle/speckle-preview-service@sha256:64fec526c49b475216fa80ff44491f77346ddc9aa500ea6d910fb5f945f8a4f9"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-06-10T12:52:08.964258661Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "pptruser",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=22.6.0",
"YARN_VERSION=1.22.22",
"NODE_ENV=production",
"CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome",
"USER_DATA_DIR=/tmp/puppeteer"
],
"Cmd": null,
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/speckle-server/packages/preview-service",
"Entrypoint": [
"tini",
"--",
"node",
"--loader=./dist/bootstrap.js",
"./dist/main.js"
],
"OnBuild": null,
"Labels": null,
"Shell": [
"/bin/bash",
"-o",
"pipefail",
"-c"
]
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1013831196,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/575ebb9ccd1e689c2cdc5205a46264b918d441c26a8d1ad30576b2b67305ed1d/diff:/var/lib/docker/overlay2/99cb92b0e1dedfc15bc70c3ff48bc9b1cc1543d7e27de37fc6721fde41fe831b/diff:/var/lib/docker/overlay2/44c11677166b22966353ff37f15dfa14fd2ec9100955fe56e61789c45b778a31/diff:/var/lib/docker/overlay2/97459196ca341b3d821951412fab06207c1c13aa1335d4972aabe7b8e6f9b201/diff:/var/lib/docker/overlay2/26bf7826cb4cfa9ffdaa67ac4882d51fe0a2c3a92632b2310049a1b2d9ea9e5b/diff:/var/lib/docker/overlay2/d1e8fce2657454a1cacdfdcfd68ed018534cdded463a6c77b8cd354e471b396f/diff:/var/lib/docker/overlay2/8e8f583a6c1452c0c9f439cf317bf73c197823f3fa83855a71dd42cc2a2cacee/diff:/var/lib/docker/overlay2/f2e4479ad03c6f18e9ac27546894b58e3b46212c1f113e8a4b6f8aca0fc39c71/diff:/var/lib/docker/overlay2/4ef22e2a09fa70c6a3173aaaf81339971b2aade0ebed3efe072b7e2f677c4ab6/diff:/var/lib/docker/overlay2/0406a0df7a4d14fbebfa58056bf296e0b677d7e37d0f127a3d92491a72f18586/diff:/var/lib/docker/overlay2/46ae5806b87708c24e31fc93c867e1bd474e752e2c6c2e1f21a4a11935a45976/diff:/var/lib/docker/overlay2/f95ae303331d0e4193bbe0a296060c5c2e30a16269ad96b16977bf3f606f0c8d/diff:/var/lib/docker/overlay2/c978104cd21043ef2af0e8c95e6e724c50ee04458f55ad9ec2774c94a363ba07/diff:/var/lib/docker/overlay2/e2c6335b576e3ac164d1797bc48a9a6ba1dab5dd89d689ea3ff792247a95ce52/diff:/var/lib/docker/overlay2/d4b89f4ab56bec6bbfdf2cb34d0cc07839dbf286e4a983385cbee6f2dbb38cd3/diff:/var/lib/docker/overlay2/b3a254ca5ff6068c8a6fe5565ce6f963ea3fc7e72aeb2ff99b562a8908782a32/diff:/var/lib/docker/overlay2/16c1e96edaca6e29ec48fc1c9565a1862c841a266a42f9673c1b7bde29d89d99/diff:/var/lib/docker/overlay2/803ea412b25d453fffd8796b9ab46c7df0bf2731530a2c83987dd5b47d52a036/diff:/var/lib/docker/overlay2/4718a9dc8182bd77467a0e41b78eb1e17cbd8058d35092b685621cee98a19bd8/diff",
"MergedDir": "/var/lib/docker/overlay2/9523d822ab6b5be587a68f69bd3b7b8fe213d4a35bebb096b3b0693804136ace/merged",
"UpperDir": "/var/lib/docker/overlay2/9523d822ab6b5be587a68f69bd3b7b8fe213d4a35bebb096b3b0693804136ace/diff",
"WorkDir": "/var/lib/docker/overlay2/9523d822ab6b5be587a68f69bd3b7b8fe213d4a35bebb096b3b0693804136ace/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:9853575bc4f955c5892dd64187538a6cd02dba6968eba9201854876a7a257034",
"sha256:68e210d2978225ca161a1652530cf67cf2588de46311ce23637fd0a33bfe3679",
"sha256:ae449049e07b1685b326e95eaa7ae1465fd442b99590222283f319fd3e07b411",
"sha256:2dce05fb29a35d3b22d5e641a5566009184282d778cc1bf56a29f7331e46b078",
"sha256:c2c62a7c8a8d825e62be1eec2037de42393c720835e00d21a22d79ae82ab5afa",
"sha256:f5a2781fabed37ffaa937adca7408a1eb2a5ef4095a89850a3ebebeabb6c7d4e",
"sha256:e0bc50bf7bbb6c664ac19b45095468b2c8655285c3a4798a9f09b954284d3ec6",
"sha256:dd91ae34b0c1f032caaa4ff1e283ce9ca3c46e42490e233145ce8c23ad6f1a60",
"sha256:f8fc15290eb482018c18f5be8e4247852d3e8866a67db3608fe98779c3b08f37",
"sha256:9ed424c1234315c31c8a8877b01cca195cedbffc43225402b6a7ef5b35fa5e85",
"sha256:98dd7625e8b5936ed746865d36e69251da3d42109c11a540d7c34e05380f3ee2",
"sha256:5a2abcaff59082f666c9586546d2515078f223cab7929188533799eab9f3fe56",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:d8b0a0791ab819baf43956dd03b8f43013aec11b94ac3d327f20d69c05238ac2",
"sha256:02c9605418680c39c1e02a6f79014b71984f9bf6083b1964953daf6e5a959778",
"sha256:39ce4b2c64de534af7f2433b91a5972e3c6bbb4aba46c2dbec1717d55eaec84d",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:5103434f6b7ea87ba6dc8683a2cfbc729613f814be350604af979791e2ccbb6c",
"sha256:75624cafa7e5c7e5dc2fc637486934253456939041ade491f4a8aa12c759899f",
"sha256:bbcca81df7660fa5d9052ac8399e25d3e9a8b80c0e758263a664ddb7821e15f9"
]
},
"Metadata": {
"LastTagTime": "2026-03-17T15:38:45.412962181+08:00"
}
}