镜像构建历史
# 2024-11-02 04:19:12 0.00B 设置默认要执行的命令
CMD ["node" "current/index.js"]
# 2024-11-02 04:19:12 0.00B 声明容器运行时监听的端口
EXPOSE map[2368/tcp:{}]
# 2024-11-02 04:19:12 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["docker-entrypoint.sh"]
# 2024-11-02 04:19:12 610.00B 复制新文件或目录到容器中
COPY docker-entrypoint.sh /usr/local/bin # buildkit
# 2024-11-02 04:19:12 0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/var/lib/ghost/content]
# 2024-11-02 04:19:12 0.00B 设置工作目录为/var/lib/ghost
WORKDIR /var/lib/ghost
# 2024-11-02 04:19:12 329.31MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; mkdir -p "$GHOST_INSTALL"; chown node:node "$GHOST_INSTALL"; savedAptMark="$(apt-mark showmanual)"; aptPurge=; installCmd='gosu node ghost install "$GHOST_VERSION" --db mysql --dbhost mysql --no-prompt --no-stack --no-setup --dir "$GHOST_INSTALL"'; if ! eval "$installCmd"; then aptPurge=1; apt-get update; apt-get install -y --no-install-recommends g++ make python3; eval "$installCmd"; fi; cd "$GHOST_INSTALL"; gosu node ghost config --no-prompt --ip '::' --port 2368 --url 'http://localhost:2368'; gosu node ghost config paths.contentPath "$GHOST_CONTENT"; gosu node ln -s config.production.json "$GHOST_INSTALL/config.development.json"; readlink -f "$GHOST_INSTALL/config.development.json"; mv "$GHOST_CONTENT" "$GHOST_INSTALL/content.orig"; mkdir -p "$GHOST_CONTENT"; chown node:node "$GHOST_CONTENT"; chmod 1777 "$GHOST_CONTENT"; cd "$GHOST_INSTALL/current"; packages="$(node -p ' var ghost = require("./package.json"); var transform = require("./node_modules/@tryghost/image-transform/package.json"); [ "sharp@" + transform.optionalDependencies["sharp"], "sqlite3@" + ghost.optionalDependencies["sqlite3"], ].join(" ") ')"; if echo "$packages" | grep 'undefined'; then exit 1; fi; for package in $packages; do installCmd='gosu node yarn add "$package" --force'; if ! eval "$installCmd"; then aptPurge=1; apt-get update; apt-get install -y --no-install-recommends g++ make python3; case "$package" in sharp@*) echo >&2 "sorry: libvips 8.10 in Debian bullseye is not new enough (8.12.2+) for sharp 0.30 😞"; continue ;; esac; eval "$installCmd --build-from-source"; fi; done; if [ -n "$aptPurge" ]; then apt-mark showmanual | xargs apt-mark auto > /dev/null; [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; apt-get purge -y --auto-remove; rm -rf /var/lib/apt/lists/*; fi; gosu node yarn cache clean; gosu node npm cache clean --force; npm cache clean --force; rm -rv /tmp/yarn* /tmp/v8* # buildkit
# 2024-11-02 04:19:12 0.00B 设置环境变量 GHOST_VERSION
ENV GHOST_VERSION=5.99.0
# 2024-11-02 04:19:12 0.00B 设置环境变量 GHOST_CONTENT
ENV GHOST_CONTENT=/var/lib/ghost/content
# 2024-11-02 04:19:12 0.00B 设置环境变量 GHOST_INSTALL
ENV GHOST_INSTALL=/var/lib/ghost
# 2024-11-02 04:19:12 47.51MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; npm install -g "ghost-cli@$GHOST_CLI_VERSION"; npm cache clean --force # buildkit
# 2024-11-02 04:19:12 0.00B 设置环境变量 GHOST_CLI_VERSION
ENV GHOST_CLI_VERSION=1.26.1
# 2024-11-02 04:19:12 0.00B 设置环境变量 NODE_ENV
ENV NODE_ENV=production
# 2024-11-02 04:19:12 4.23MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends ca-certificates gnupg wget; rm -rf /var/lib/apt/lists/*; dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; export GNUPGHOME="$(mktemp -d)"; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; gpgconf --kill all; rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; apt-mark auto '.*' > /dev/null; [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; chmod +x /usr/local/bin/gosu; gosu --version; gosu nobody true # buildkit
# 2024-11-02 04:19:12 0.00B 设置环境变量 GOSU_VERSION
ENV GOSU_VERSION=1.17
# 2024-07-09 13:33:43 0.00B 设置默认要执行的命令
CMD ["node"]
# 2024-07-09 13:33:43 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["docker-entrypoint.sh"]
# 2024-07-09 13:33:43 388.00B 复制新文件或目录到容器中
COPY docker-entrypoint.sh /usr/local/bin/ # buildkit
# 2024-07-09 13:33:43 7.16MB 执行命令并创建新的镜像层
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-07-09 13:33:43 0.00B 设置环境变量 YARN_VERSION
ENV YARN_VERSION=1.22.19
# 2024-07-09 13:33:43 110.01MB 执行命令并创建新的镜像层
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-07-09 13:33:43 0.00B 设置环境变量 NODE_VERSION
ENV NODE_VERSION=18.20.4
# 2024-07-09 13:33:43 8.90KB 执行命令并创建新的镜像层
RUN /bin/sh -c groupadd --gid 1000 node && useradd --uid 1000 --gid node --shell /bin/bash --create-home node # buildkit
# 2024-07-09 13:33:43 0.00B
/bin/sh -c #(nop) CMD ["bash"]
# 2024-07-09 13:33:43 74.78MB
/bin/sh -c #(nop) ADD file:90b9dd8f12120e8b2cd3ece45fcbe8af67e40565e2032a40f64bd921c43e2ce7 in /
镜像信息
{
"Id": "sha256:a28ff465e2c8a27266b0fe7183ef2c4b0143c9ef0e395cdd7c562bc7bbc62e8a",
"RepoTags": [
"ghost:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ghost:latest"
],
"RepoDigests": [
"ghost@sha256:b17cef3bd09d3ebc8649373b533f2b2c8a8195938ccb5f96de478900fb00ae46",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ghost@sha256:a07f97334a500a2253c673976dce067b45700f3f41e148e3d3898477fb16de98"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2024-11-01T20:19:12Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"2368/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=18.20.4",
"YARN_VERSION=1.22.19",
"GOSU_VERSION=1.17",
"NODE_ENV=production",
"GHOST_CLI_VERSION=1.26.1",
"GHOST_INSTALL=/var/lib/ghost",
"GHOST_CONTENT=/var/lib/ghost/content",
"GHOST_VERSION=5.99.0"
],
"Cmd": [
"node",
"current/index.js"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": {
"/var/lib/ghost/content": {}
},
"WorkingDir": "/var/lib/ghost",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 573006598,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/a5ec010787f10e7f0d41504d1f902ceafbbc4bf5ce8a8d44af54d659516f89d5/diff:/var/lib/docker/overlay2/6ffbec3a943463f7f7a6aecf8f7525d9e5c76b4ac4ace3362697a796bcada4a7/diff:/var/lib/docker/overlay2/e1040f21c0ff507adfb2f505b14437475dcdaea4c3f59c35b4c285e5c2649d3d/diff:/var/lib/docker/overlay2/dd6502d4462cb2cc9362a39417ff00c9a29344d67fe55db0e08db1cbc6af2c47/diff:/var/lib/docker/overlay2/dbd491b265fa4c54728c4b51e2d762b46ad5ad77abb1f7569e9736a7bc7a82a1/diff:/var/lib/docker/overlay2/b5008f508665e0a7dd8f14d90db824a5cd3fda4872e0c765a36fc811fa1b63df/diff:/var/lib/docker/overlay2/dfb1d32d7a625de2b0ec46069487460e4d13437b303b42832ed7903ba348131e/diff:/var/lib/docker/overlay2/7919d7a44b376e1d55a7f1553569c4ee51f52b67de18bb6f29d7649042e1fa53/diff:/var/lib/docker/overlay2/640dc40711366eefdc38587353d7800897ec5b45fb0486472d1bbe1802e322be/diff",
"MergedDir": "/var/lib/docker/overlay2/fa99b6e400478bde8de59ad74cbcb9a0efc0e6129ddf8e149ce70178f0ea0604/merged",
"UpperDir": "/var/lib/docker/overlay2/fa99b6e400478bde8de59ad74cbcb9a0efc0e6129ddf8e149ce70178f0ea0604/diff",
"WorkDir": "/var/lib/docker/overlay2/fa99b6e400478bde8de59ad74cbcb9a0efc0e6129ddf8e149ce70178f0ea0604/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:98b5f35ea9d3eca6ed1881b5fe5d1e02024e1450822879e4c13bb48c9386d0ad",
"sha256:33454e312884653b237094e95279a9dbbee4a8a4a9d821a1eff1f8490055ce89",
"sha256:25238bcae02473564751669f32682496e32b01847b522a75411d5563c8291649",
"sha256:9ca0be3fa06ed4b8a5e905a60cbce0ec28186391b36d70e315668e0e24ff26b6",
"sha256:9210b29b87c7e2ad537b2d1057539f7a4e0319e45b9d2fb272be93759fa3f4ae",
"sha256:dc85763eeb2d12d8d0e1b339a1da6a00005faaa322c1d67d7b00605e58bdff3a",
"sha256:43753e52107e9d7302a3cf0c6ce275d316da4e06d267d045d6c416eb3a58f745",
"sha256:6acf7923be0a35f5f37cb6b1d270296734f3735e8c3c65a2d483857c58286640",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:994f4efbd114c51baa19cae34b3a5394a77511dfdbd855036917a027099a1753"
]
},
"Metadata": {
"LastTagTime": "2024-11-07T11:19:01.555807013+08:00"
}
}