镜像构建历史
# 2025-08-01 19:46:07 0.00B 设置默认要执行的命令
CMD ["nginx" "-g" "daemon off;"]
# 2025-08-01 19:46:07 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/bin/bash" "/entrypoint.sh"]
# 2025-08-01 19:46:07 0.00B 指定运行容器时使用的用户
USER penpot:penpot
# 2025-08-01 19:46:07 352.98MB 执行命令并创建新的镜像层
RUN /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
# 2025-08-01 19:46:01 1.67KB 复制文件或目录到容器中
ADD ./files/nginx-entrypoint.sh /entrypoint.sh # buildkit
# 2025-08-01 19:46:01 5.41KB 复制文件或目录到容器中
ADD ./files/nginx-mime.types /etc/nginx/mime.types # buildkit
# 2025-08-01 19:46:01 55.00B 复制文件或目录到容器中
ADD ./files/resolvers.conf /etc/nginx/overrides.d/resolvers.conf.template # buildkit
# 2025-08-01 19:46:01 2.16KB 复制文件或目录到容器中
ADD ./files/nginx-proxies.conf /etc/nginx/nginx-proxies.conf # buildkit
# 2025-08-01 19:46:00 4.74KB 复制文件或目录到容器中
ADD ./files/nginx.conf /etc/nginx/nginx.conf.template # buildkit
# 2025-08-01 19:45:58 50.00B 复制文件或目录到容器中
ADD ./files/config.js /var/www/app/js/config.js # buildkit
# 2025-08-01 19:45:58 352.97MB 复制文件或目录到容器中
ADD ./bundle-frontend/ /var/www/app/ # buildkit
# 2025-08-01 19:45:53 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; # buildkit
# 2025-08-01 19:45:53 0.00B 指定运行容器时使用的用户
USER root
# 2025-08-01 19:45:53 0.00B 添加元数据标签
LABEL maintainer=Penpot <docker@penpot.app>
# 2025-07-28 08:05:25 0.00B 设置默认要执行的命令
CMD ["nginx" "-g" "daemon off;"]
# 2025-07-28 08:05:25 0.00B 指定运行容器时使用的用户
USER 101
# 2025-07-28 08:05:25 0.00B 设置停止容器时发送的系统调用信号
STOPSIGNAL SIGQUIT
# 2025-07-28 08:05:25 0.00B 声明容器运行时监听的端口
EXPOSE map[8080/tcp:{}]
# 2025-07-28 08:05:25 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/docker-entrypoint.sh"]
# 2025-07-28 08:05:25 4.62KB 复制新文件或目录到容器中
COPY 30-tune-worker-processes.sh /docker-entrypoint.d # buildkit
# 2025-07-28 08:05:24 3.01KB 复制新文件或目录到容器中
COPY 20-envsubst-on-templates.sh /docker-entrypoint.d # buildkit
# 2025-07-28 08:05:24 389.00B 复制新文件或目录到容器中
COPY 15-local-resolvers.envsh /docker-entrypoint.d # buildkit
# 2025-07-28 08:05:24 2.13KB 复制新文件或目录到容器中
COPY 10-listen-on-ipv6-by-default.sh /docker-entrypoint.d # buildkit
# 2025-07-28 08:05:24 1.62KB 复制新文件或目录到容器中
COPY docker-entrypoint.sh / # buildkit
# 2025-07-28 08:05:24 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-07-28 08:05:24 117.65MB 执行命令并创建新的镜像层
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 --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 --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/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="517bc18954ccf4efddd51986584ca1f37966833ad342a297e1fe58fd0faf14c5a4dabcb23519dca433878a2927a95d6bea05a6749ee2fa67a33bf24cdc41b1e4 *${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-07-28 08:05:24 0.00B 定义构建参数
ARG GID=101
# 2025-07-28 08:05:24 0.00B 定义构建参数
ARG UID=101
# 2025-07-28 08:05:24 0.00B 设置环境变量 DYNPKG_RELEASE
ENV DYNPKG_RELEASE=1~bookworm
# 2025-07-28 08:05:24 0.00B 设置环境变量 PKG_RELEASE
ENV PKG_RELEASE=1~bookworm
# 2025-07-28 08:05:24 0.00B 设置环境变量 NJS_RELEASE
ENV NJS_RELEASE=1~bookworm
# 2025-07-28 08:05:24 0.00B 设置环境变量 NJS_VERSION
ENV NJS_VERSION=0.8.10
# 2025-07-28 08:05:24 0.00B 设置环境变量 NGINX_VERSION
ENV NGINX_VERSION=1.28.0
# 2025-07-28 08:05:24 0.00B 添加元数据标签
LABEL maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>
# 2025-07-21 08:00:00 74.81MB
# debian.sh --arch 'amd64' out/ 'bookworm' '@1753056000'
镜像信息
{
"Id": "sha256:66020517764f62bb1ab23917550780a76595961adf32523c0924185172f0fa79",
"RepoTags": [
"penpotapp/frontend:2.8.1",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/penpotapp/frontend:2.8.1"
],
"RepoDigests": [
"penpotapp/frontend@sha256:0d031d3a0ae53df17dd0acd009faf542f673b74b405cbe64c2d8d88c1f48686b",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/penpotapp/frontend@sha256:82c42b4930a906915d820772188cd98bed7d0e3f9cd768e2a8273d0aa4445549"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-08-01T11:46:07.882272546Z",
"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.28.0",
"NJS_VERSION=0.8.10",
"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": {
"maintainer": "Penpot \u003cdocker@penpot.app\u003e",
"org.opencontainers.image.created": "2025-07-28T00:04:34.782Z",
"org.opencontainers.image.description": "Unprivileged NGINX Dockerfiles",
"org.opencontainers.image.licenses": "Apache-2.0",
"org.opencontainers.image.revision": "c99493627c88c2a449f32809637e97278a4867e1",
"org.opencontainers.image.source": "https://github.com/nginx/docker-nginx-unprivileged",
"org.opencontainers.image.title": "docker-nginx-unprivileged",
"org.opencontainers.image.url": "https://github.com/nginx/docker-nginx-unprivileged",
"org.opencontainers.image.version": "1.28.0"
},
"StopSignal": "SIGQUIT"
},
"Architecture": "amd64",
"Os": "linux",
"Size": 898454450,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/a721f239a64b602d9f4af2bce697fc823092f5ef1d928154c88a8a025b82d07d/diff:/var/lib/docker/overlay2/aca7a2ef6cd1e3e1e18cf0b153b7d04178d90d98fd9cc140ab31676ef655035b/diff:/var/lib/docker/overlay2/9dd78e99ad5cad62dc3d8348fb341e2dfdd4a9af2befd9ee93c730add70a98d4/diff:/var/lib/docker/overlay2/dc5cd182f33f0ed8dc67445c95b2646adce37e3b69eb7f5ab82a7975e0ed92de/diff:/var/lib/docker/overlay2/4346b6267608fc978271038807a899f677051b4e708ed4a01e79fe7ab2cdb288/diff:/var/lib/docker/overlay2/e266b4a067598af48fb38bdc0c5f59854448a0102a25de2a773ec1cbbd931b70/diff:/var/lib/docker/overlay2/3ab28a75af214fb64321c68c997f27fef8d15271e339f88e3683f96be8c70d30/diff:/var/lib/docker/overlay2/e34740b00d859daa055ec5a5b40b1b9e9a84db17707252039b737f59f5a308ae/diff:/var/lib/docker/overlay2/e013bd77906e1cfbf29e35000a54eafe5579c7687b77f2a8dd06dc29c647fe42/diff:/var/lib/docker/overlay2/f531928157039b77176877a79115e2166528204757ace24104c48f3344d051b1/diff:/var/lib/docker/overlay2/11240fec74d704a553c90dfba5e56f0536715d597901636074260fa32128f5c7/diff:/var/lib/docker/overlay2/f97b9fc810fc1c411dc58317851f389b66de926ea75a3499edc0dfcd01716255/diff:/var/lib/docker/overlay2/c761b679ac0fd7721e1ff76a357168bee9756a302029bf8c82cc956e95408273/diff:/var/lib/docker/overlay2/a3d5ed6d490019c853582c341180013e9fa3d1829fd7b7258f7e35e5abf0ace1/diff:/var/lib/docker/overlay2/4b4bb69e2d81c58dcfa2de28e84ceae4dc10cfe95318bd273db6ef8453606547/diff:/var/lib/docker/overlay2/78f84327c675385035d735018d8f3e092b1a95be91b6e02564557eb58a1c2945/diff",
"MergedDir": "/var/lib/docker/overlay2/f0f264a6fd737262fe031136a76f85c2ce4bde64c25d268a58cdbaa8d6beb60d/merged",
"UpperDir": "/var/lib/docker/overlay2/f0f264a6fd737262fe031136a76f85c2ce4bde64c25d268a58cdbaa8d6beb60d/diff",
"WorkDir": "/var/lib/docker/overlay2/f0f264a6fd737262fe031136a76f85c2ce4bde64c25d268a58cdbaa8d6beb60d/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:7cc7fe68eff66f19872441a51938eecc4ad33746d2baa3abc081c1e6fe25988e",
"sha256:4f60976cf7857d8138034fd862eb11f51f717ecfa25f8b0e80ed591aa98e470f",
"sha256:bb809e3ae3ac53de0b83fb29f78988c9c3840dd9f29101690755513c422fe7d4",
"sha256:e0e3fbd4ac800d647191c59aa47e93368bb98a61c7dd30185c0ace9db6894b4d",
"sha256:0fde895fe36b8ef1015b790df83463c84365694d4ec0d5ba79843191d0c46fb7",
"sha256:68c76fe4fd9eb824ec0c656916a312d994efc3b0b35ee8fd59c7ba36d98c38a5",
"sha256:196d69967c821205f039796ff43f0d2e35d08e1c50100aa660b279366e07570c",
"sha256:08d3734c31db82d91752ba8e53706e66184ce6a4495ea3301b9857b2f1298bc1",
"sha256:27665572a1d2216bb4e0a6b8980a93954af4130efdc4d43266d6741602e263bc",
"sha256:edad32c40464a46ed4b8cf2197ac10bf58398e41ae24077e07dc341438d7ac68",
"sha256:8942ca3385e8aa8b7949a581fdb71a0371cb24d28de26a283d4380540e8d3c09",
"sha256:ab42eae8a5e3b05c086e99323978d66e91d617f22a31950454c23e0b2fc88924",
"sha256:8a94f3e8ad73e62c688dfae206a09dee4d2273a1b22a65a18c8681336e81727b",
"sha256:7783c34d2f10529f71fc09f2a7b81ac707ae0decbc288aa582b5b9f45fc6fae4",
"sha256:9aab9ecef54ef45455fab8ecf9d96ab4175481f08dbdfd36ecc11b17ebdce0d1",
"sha256:bd7adb4302f697bb2f9ba2d6fff265220345627ebe63610b2da226745fb0a82a",
"sha256:4a0ae66deffed1bc000bbc182b52bc267f00b8d6991ad6797bbe21f6e08ee524"
]
},
"Metadata": {
"LastTagTime": "2025-08-04T10:05:43.529282731+08:00"
}
}