镜像构建历史
# 2026-05-06 20:42:12 0.00B 设置默认要执行的命令
CMD ["nginx" "-g" "daemon off;"]
# 2026-05-06 20:42:12 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/bin/bash" "/entrypoint.sh"]
# 2026-05-06 20:42:12 0.00B 指定运行容器时使用的用户
USER penpot:penpot
# 2026-05-06 20:42:12 200.29MB 执行命令并创建新的镜像层
RUN |1 BUNDLE_PATH=./bundle-frontend/ /bin/sh -c chown -R 1001:0 /var/cache/nginx; chmod -R g+w /var/cache/nginx; chown -R 1001:0 /etc/nginx; chmod -R g+w /etc/nginx; chown -R 1001:0 /var/www; chmod -R g+w /var/www; # buildkit
# 2026-05-06 20:42:11 1.67KB 复制新文件或目录到容器中
COPY ./files/nginx-entrypoint.sh /entrypoint.sh # buildkit
# 2026-05-06 20:42:11 2.16KB 复制新文件或目录到容器中
COPY ./files/nginx-external-locations.conf /etc/nginx/overrides/location.d/external-locations.conf # buildkit
# 2026-05-06 20:42:11 5.41KB 复制新文件或目录到容器中
COPY ./files/nginx-mime.types /etc/nginx/mime.types # buildkit
# 2026-05-06 20:42:11 46.00B 复制新文件或目录到容器中
COPY ./files/nginx-resolvers.conf.template /tmp/resolvers.conf.template # buildkit
# 2026-05-06 20:42:11 5.17KB 复制新文件或目录到容器中
COPY ./files/nginx.conf.template /tmp/nginx.conf.template # buildkit
# 2026-05-06 20:42:11 50.00B 复制新文件或目录到容器中
COPY ./files/config.js /var/www/app/js/config.js # buildkit
# 2026-05-06 20:42:11 200.28MB 复制新文件或目录到容器中
COPY ./bundle-frontend/ /var/www/app/ # buildkit
# 2026-04-07 22:54:43 0.00B 定义构建参数
ARG BUNDLE_PATH=./bundle-frontend/
# 2026-04-07 22:54:43 4.55KB 执行命令并创建新的镜像层
RUN /bin/sh -c set -ex; useradd -U -M -u 1001 -s /bin/false -d /opt/penpot penpot; mkdir -p /opt/data/assets; chown -R penpot:penpot /opt/data; mkdir -p /etc/nginx/overrides/main.d/; mkdir -p /etc/nginx/overrides/http.d/; mkdir -p /etc/nginx/overrides/server.d/; mkdir -p /etc/nginx/overrides/assets.d/; mkdir -p /etc/nginx/overrides/location.d/; # buildkit
# 2026-04-07 22:54:43 0.00B 指定运行容器时使用的用户
USER root
# 2026-04-07 22:54:43 0.00B 添加元数据标签
LABEL maintainer=Penpot <docker@penpot.app>
# 2025-10-10 07:29:38 0.00B 设置默认要执行的命令
CMD ["nginx" "-g" "daemon off;"]
# 2025-10-10 07:29:38 0.00B 指定运行容器时使用的用户
USER 101
# 2025-10-10 07:29:38 0.00B 设置停止容器时发送的系统调用信号
STOPSIGNAL SIGQUIT
# 2025-10-10 07:29:38 0.00B 声明容器运行时监听的端口
EXPOSE [8080/tcp]
# 2025-10-10 07:29:38 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/docker-entrypoint.sh"]
# 2025-10-10 07:29:38 4.62KB 复制新文件或目录到容器中
COPY 30-tune-worker-processes.sh /docker-entrypoint.d # buildkit
# 2025-10-10 07:29:38 3.01KB 复制新文件或目录到容器中
COPY 20-envsubst-on-templates.sh /docker-entrypoint.d # buildkit
# 2025-10-10 07:29:38 389.00B 复制新文件或目录到容器中
COPY 15-local-resolvers.envsh /docker-entrypoint.d # buildkit
# 2025-10-10 07:29:38 2.13KB 复制新文件或目录到容器中
COPY 10-listen-on-ipv6-by-default.sh /docker-entrypoint.d # buildkit
# 2025-10-10 07:29:38 1.62KB 复制新文件或目录到容器中
COPY docker-entrypoint.sh / # buildkit
# 2025-10-10 07:29:38 13.86KB 执行命令并创建新的镜像层
RUN |2 UID=101 GID=101 /bin/sh -c sed -i 's,listen 80;,listen 8080;,' /etc/nginx/conf.d/default.conf && sed -i '/user nginx;/d' /etc/nginx/nginx.conf && sed -i 's,\(/var\)\{0\,1\}/run/nginx.pid,/tmp/nginx.pid,' /etc/nginx/nginx.conf && sed -i "/^http {/a \ proxy_temp_path /tmp/proxy_temp;\n client_body_temp_path /tmp/client_temp;\n fastcgi_temp_path /tmp/fastcgi_temp;\n uwsgi_temp_path /tmp/uwsgi_temp;\n scgi_temp_path /tmp/scgi_temp;\n" /etc/nginx/nginx.conf && sed -i 's,PIDFILE=${PIDFILE:-/run/nginx.pid},PIDFILE=${PIDFILE:-/tmp/nginx.pid},' /etc/init.d/nginx && chown -R $UID:0 /var/cache/nginx && chmod -R g+w /var/cache/nginx && chown -R $UID:0 /etc/nginx && chmod -R g+w /etc/nginx # buildkit
# 2025-10-10 07:29:37 117.56MB 执行命令并创建新的镜像层
RUN |2 UID=101 GID=101 /bin/sh -c set -x && groupadd --system --gid $GID nginx || true && useradd --system --gid nginx --no-create-home --home /nonexistent --comment "nginx user" --shell /bin/false --uid $UID nginx || true && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y gnupg1 ca-certificates && NGINX_GPGKEYS="573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 8540A6F18833A80E9C1653A42FD21310B49F6B46 9E9BE90EACBCDE69FE9B204CBCDCD8A38D88A2B3"; NGINX_GPGKEY_PATH=/etc/apt/keyrings/nginx-archive-keyring.gpg; export GNUPGHOME="$(mktemp -d)"; found=''; for NGINX_GPGKEY in $NGINX_GPGKEYS; do for server in hkp://keyserver.ubuntu.com:80 pgp.mit.edu ; do echo "Fetching GPG key $NGINX_GPGKEY from $server"; gpg1 --batch --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$NGINX_GPGKEY" && found=yes && break; done; test -z "$found" && echo >&2 "error: failed to fetch GPG key $NGINX_GPGKEY" && exit 1; done; gpg1 --batch --export $NGINX_GPGKEYS > "$NGINX_GPGKEY_PATH" ; rm -rf "$GNUPGHOME"; apt-get remove --purge --auto-remove -y gnupg1 && rm -rf /var/lib/apt/lists/* && dpkgArch="$(dpkg --print-architecture)" && nginxPackages=" nginx=${NGINX_VERSION}-${PKG_RELEASE} nginx-module-xslt=${NGINX_VERSION}-${DYNPKG_RELEASE} nginx-module-geoip=${NGINX_VERSION}-${DYNPKG_RELEASE} nginx-module-image-filter=${NGINX_VERSION}-${DYNPKG_RELEASE} nginx-module-njs=${NGINX_VERSION}+${NJS_VERSION}-${NJS_RELEASE} " && case "$dpkgArch" in amd64|arm64) echo "deb [signed-by=$NGINX_GPGKEY_PATH] https://nginx.org/packages/mainline/debian/ bookworm nginx" >> /etc/apt/sources.list.d/nginx.list && apt-get update ;; *) tempDir="$(mktemp -d)" && chmod 777 "$tempDir" && savedAptMark="$(apt-mark showmanual)" && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y curl devscripts equivs git libxml2-utils lsb-release xsltproc && ( cd "$tempDir" && REVISION="${NGINX_VERSION}-${PKG_RELEASE}" && REVISION=${REVISION%~*} && curl -f -L -O https://github.com/nginx/pkg-oss/archive/${REVISION}.tar.gz && PKGOSSCHECKSUM="43ecd667d9039c9ab0fab9068c16b37825b15f7d4ef6ea8f36a41378bdf1a198463c751f8b76cfe2aef7ffa8dd9f88f180b958a8189d770258b5a97dc302daf4 *${REVISION}.tar.gz" && if [ "$(openssl sha512 -r ${REVISION}.tar.gz)" = "$PKGOSSCHECKSUM" ]; then echo "pkg-oss tarball checksum verification succeeded!"; else echo "pkg-oss tarball checksum verification failed!"; exit 1; fi && tar xzvf ${REVISION}.tar.gz && cd pkg-oss-${REVISION} && cd debian && for target in base module-geoip module-image-filter module-njs module-xslt; do make rules-$target; mk-build-deps --install --tool="apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes" debuild-$target/nginx-$NGINX_VERSION/debian/control; done && make base module-geoip module-image-filter module-njs module-xslt ) && apt-mark showmanual | xargs apt-mark auto > /dev/null && { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; } && ls -lAFh "$tempDir" && ( cd "$tempDir" && dpkg-scanpackages . > Packages ) && grep '^Package: ' "$tempDir/Packages" && echo "deb [ trusted=yes ] file://$tempDir ./" > /etc/apt/sources.list.d/temp.list && apt-get -o Acquire::GzipIndexes=false update ;; esac && apt-get install --no-install-recommends --no-install-suggests -y $nginxPackages gettext-base curl && apt-get remove --purge --auto-remove -y && rm -rf /var/lib/apt/lists/* /etc/apt/sources.list.d/nginx.list && if [ -n "$tempDir" ]; then apt-get purge -y --auto-remove && rm -rf "$tempDir" /etc/apt/sources.list.d/temp.list; fi && ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log && mkdir /docker-entrypoint.d # buildkit
# 2025-10-10 07:29:37 0.00B 定义构建参数
ARG GID=101
# 2025-10-10 07:29:37 0.00B 定义构建参数
ARG UID=101
# 2025-10-10 07:29:37 0.00B 设置环境变量 DYNPKG_RELEASE
ENV DYNPKG_RELEASE=1~bookworm
# 2025-10-10 07:29:37 0.00B 设置环境变量 PKG_RELEASE
ENV PKG_RELEASE=1~bookworm
# 2025-10-10 07:29:37 0.00B 设置环境变量 NJS_RELEASE
ENV NJS_RELEASE=1~bookworm
# 2025-10-10 07:29:37 0.00B 设置环境变量 NJS_VERSION
ENV NJS_VERSION=0.9.1
# 2025-10-10 07:29:37 0.00B 设置环境变量 NGINX_VERSION
ENV NGINX_VERSION=1.29.1
# 2025-10-10 07:29:37 0.00B 添加元数据标签
LABEL maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>
# 2025-09-29 08:00:00 74.81MB
# debian.sh --arch 'amd64' out/ 'bookworm' '@1759104000'
镜像信息
{
"Id": "sha256:fe3af09b1ae6681bee000da30b455f23958ad91814da1f8bd1910b1e881d95ac",
"RepoTags": [
"penpotapp/frontend:2.14.5",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/penpotapp/frontend:2.14.5"
],
"RepoDigests": [
"penpotapp/frontend@sha256:f080989219e7f46f286632ca240925dd002ed4ced47a502ad87a6299d160dfb0",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/penpotapp/frontend@sha256:dce73ed3f884c135e0fe74ff30103e3b44c923277291c344d750511e7c490b2f"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-05-06T12:42:12.549468539Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "penpot:penpot",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.29.1",
"NJS_VERSION=0.9.1",
"NJS_RELEASE=1~bookworm",
"PKG_RELEASE=1~bookworm",
"DYNPKG_RELEASE=1~bookworm"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"/bin/bash",
"/entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"bundle_version": "2.14.5",
"maintainer": "Penpot \u003cdocker@penpot.app\u003e",
"org.opencontainers.image.created": "2026-05-06T12:41:20.346Z",
"org.opencontainers.image.description": "Penpot: The open-source design tool for design and code collaboration",
"org.opencontainers.image.licenses": "MPL-2.0",
"org.opencontainers.image.revision": "df01f7605629a3176755faf28428627ef186e0dc",
"org.opencontainers.image.source": "https://github.com/penpot/penpot",
"org.opencontainers.image.title": "penpot",
"org.opencontainers.image.url": "https://github.com/penpot/penpot",
"org.opencontainers.image.version": "2.14.5"
},
"StopSignal": "SIGQUIT"
},
"Architecture": "amd64",
"Os": "linux",
"Size": 592996343,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/6cfe415636465d29812343066c44fc40dfa2b873d384e2cf4290f3647ebccc37/diff:/var/lib/docker/overlay2/c3bc8386398a3f1fdd58c91adb98fb06643ad0e2456791234b5b5ecda2d2af57/diff:/var/lib/docker/overlay2/cf9b32670a330ca6a380658b1afb4efb5ee2c6c4b577afa5758216b62fb87a3c/diff:/var/lib/docker/overlay2/89848e9d257fa09ba85a07f173e82457fd4f5978abb4b40aa17c56cc378f965f/diff:/var/lib/docker/overlay2/2e27bd1834d526f94f1e82d9c335a880906f1ed7d36d1d5c6cd4dc5b1df1356a/diff:/var/lib/docker/overlay2/f821f896d85cc4bff3efea52d8c9f7c240178656b06f4f22dbf5e687fcba1aba/diff:/var/lib/docker/overlay2/8067479174e6c7d8f3d529974d4f6ffe7bf5a8e08c087bb1adb61d6dc2927ba9/diff:/var/lib/docker/overlay2/158df1ae2bfc6c99686e391c0c502559f2525129b1a46f84ba915988810324b1/diff:/var/lib/docker/overlay2/59d01a044ee32df3a4427cf3decbe5d44003f59076f75e8ac9028bada2fe3ea8/diff:/var/lib/docker/overlay2/b0c69ddbd94224186ac58c86b52dd6a72e1385c641d0c51fde7abec2ad7c2024/diff:/var/lib/docker/overlay2/1beb1849532eb98e5e14cfdb778a9849bbbf201fddc1e799a4d79185abde4057/diff:/var/lib/docker/overlay2/9365bd3c92cb2075cb98f425087b93a0d08b2afe57733b478ed65d7725cddae9/diff:/var/lib/docker/overlay2/e561ef4403f606a46b6ab859c9663893121b91fb8500e54ff6a01b8642c1153a/diff:/var/lib/docker/overlay2/bfb971bd69b8d8a083ea64ef0d52e383e562ee894e6067aa6e5022d5ba6da279/diff:/var/lib/docker/overlay2/4dfe81bced243bc5b9f16bbf5164c937931033191bc2fcb7dbf1f337bbc08aea/diff:/var/lib/docker/overlay2/5cf3d5df7e717c86724279b5aaa65ee7003b28885689e7865f5934499ab0516c/diff",
"MergedDir": "/var/lib/docker/overlay2/7492650d4261f454733529bf9fd68cd9ed9d0aec0a8369d1483247fb25e7e343/merged",
"UpperDir": "/var/lib/docker/overlay2/7492650d4261f454733529bf9fd68cd9ed9d0aec0a8369d1483247fb25e7e343/diff",
"WorkDir": "/var/lib/docker/overlay2/7492650d4261f454733529bf9fd68cd9ed9d0aec0a8369d1483247fb25e7e343/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:aca83606673032726b42f8e1396ceb979c32bfb26b602732baf699053e46b33e",
"sha256:2047c57fb117dacd442e6ce3fdc32289f6cb8825727c40f49a7c1ad46bf4dfb0",
"sha256:1427529dccaa7cc3fbb11cb581e4b5d1372bf3a5cda29dc72783a7cdfe4881c7",
"sha256:77cd50ede5255418d1098edd0f6055b836a07e246995a79e74dcdfca08e10b75",
"sha256:6bfe38cadb38c9e3a4514a5ba65271ed96017030396655db0ef4abfb10f300fd",
"sha256:78827a1f9391ac18f592a271c4c1b277e96a604deb96fd9db91ef3bbda83421b",
"sha256:6b285282286cc44a2b18d7c743195831520c1630c511f288a8cc615aab9b9703",
"sha256:229dd6386f4826862b2870bca4e3ce350a4eb80560110ceded9062a4ea7ef365",
"sha256:1e5e8b0043b9a2a857d66e1a11ef6cdedba7f37b3019769198b4e22d022fb6aa",
"sha256:f50ff78d9fd2151897376672d78496893f4d2173691ca3e373e191f0f40e84bc",
"sha256:bb06d341c57a2aa51e32fe2baf5a332f43e4db124dad5541cdc2e17c3eb35477",
"sha256:a8a8c75e22b2966be1b0ca4685360079f026da10f0e77162948c1d258574948c",
"sha256:f69dbf916c0b9bbc267af550bfe353b3466613a5256ed424d4550446a1371fa8",
"sha256:3aeab09637eec512ffdaa49aff41fafddeec02ee306992db8752f249dd51c4da",
"sha256:6d5a78e0dae79ae1a794b6d7cf8d7f1cd3abec108a179a5ffc7a541319a72680",
"sha256:e32ec2ad747fa2c9b64c23c0d0773aef1b23f62c43e40b7158c972731f8e64c9",
"sha256:cfaa9ed177b1fd5aece35d26f65db381388546f732809c1d79da64ab10b84f6d"
]
},
"Metadata": {
"LastTagTime": "2026-05-09T14:56:19.412169964+08:00"
}
}