镜像构建历史
# 2026-03-21 09:58:24 0.00B 设置默认要执行的命令
CMD ["java" "-jar" "/app/app.jar"]
# 2026-03-21 09:58:24 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
# 2026-03-21 09:58:24 0.00B 声明容器运行时监听的端口
EXPOSE [6060/tcp]
# 2026-03-21 09:58:24 0.00B 定义构建参数
ARG BOOKLORE_PORT=6060
# 2026-03-21 09:58:24 0.00B 设置环境变量 APP_VERSION APP_REVISION
ENV APP_VERSION=v2.3.0 APP_REVISION=c335c7bdc6611e1238e171fe60fda53573d23c33
# 2026-03-21 09:58:24 0.00B 添加元数据标签
LABEL org.opencontainers.image.title=Grimmory org.opencontainers.image.description=Grimmory: a self-hosted, multi-user digital library with smart shelves, auto metadata, Kobo and KOReader sync, BookDrop imports, OPDS support, and a built-in reader for EPUB, PDF, and comics. org.opencontainers.image.source=https://github.com/grimmory-tools/grimmory org.opencontainers.image.url=https://github.com/grimmory-tools/grimmory org.opencontainers.image.documentation=https://grimmory.org/docs/getting-started org.opencontainers.image.version=v2.3.0 org.opencontainers.image.revision=c335c7bdc6611e1238e171fe60fda53573d23c33 org.opencontainers.image.licenses=AGPL-3.0 org.opencontainers.image.base.name=docker.io/library/eclipse-temurin:25-jre-alpine
# 2026-03-21 09:58:24 0.00B 定义构建参数
ARG APP_REVISION=c335c7bdc6611e1238e171fe60fda53573d23c33
# 2026-03-21 09:58:24 0.00B 定义构建参数
ARG APP_VERSION=v2.3.0
# 2026-03-21 09:58:24 104.64MB 复制新文件或目录到容器中
COPY /workspace/booklore-api/app.jar /app/app.jar # buildkit
# 2026-03-21 09:04:06 3.58MB 复制新文件或目录到容器中
COPY /kepubify /usr/local/bin/kepubify # buildkit
# 2026-03-21 09:04:06 139.54MB 复制新文件或目录到容器中
COPY /ffprobe /usr/local/bin/ffprobe # buildkit
# 2026-03-21 04:38:42 1.48MB 复制新文件或目录到容器中
COPY /usr/bin/unrar-alpine /usr/local/bin/unrar # buildkit
# 2026-03-21 04:38:41 1.23KB 执行命令并创建新的镜像层
RUN /bin/sh -c chmod +x /usr/local/bin/entrypoint.sh # buildkit
# 2026-03-21 04:38:41 1.23KB 复制新文件或目录到容器中
COPY packaging/docker/entrypoint.sh /usr/local/bin/entrypoint.sh # buildkit
# 2026-03-21 04:38:41 3.09MB 执行命令并创建新的镜像层
RUN /bin/sh -c apk add --no-cache su-exec libstdc++ libgcc && mkdir -p /bookdrop # buildkit
# 2026-03-21 04:38:41 0.00B 设置环境变量 JAVA_TOOL_OPTIONS -XX:MaxRAMPercentage
ENV JAVA_TOOL_OPTIONS=-XX:+UseG1GC -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:MaxRAMPercentage=75.0 -XX:+ExitOnOutOfMemoryError
# 2026-02-06 06:21:10 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/__cacert_entrypoint.sh"]
# 2026-02-06 06:21:10 5.31KB 复制新文件或目录到容器中
COPY --chmod=755 entrypoint.sh /__cacert_entrypoint.sh # buildkit
# 2026-02-06 06:21:10 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; echo "Verifying install ..."; echo "java --version"; java --version; echo "Complete." # buildkit
# 2026-02-06 06:21:10 197.38MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; ARCH="$(apk --print-arch)"; case "${ARCH}" in aarch64) ESUM='159099235c536b152f86111a694a8a03392948924736f354c79e95532dcfc1f8'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_aarch64_alpine-linux_hotspot_25.0.2_10.tar.gz'; ;; x86_64) ESUM='2cbb356c6923f89814b892561e6f0377ecf035ab0577e3162d2cf4e202d38ee7'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_x64_alpine-linux_hotspot_25.0.2_10.tar.gz'; ;; *) echo "Unsupported arch: ${ARCH}"; exit 1; ;; esac; apk add --no-cache --virtual .fetch-deps gnupg; wget -O /tmp/openjdk.tar.gz ${BINARY_URL}; wget -O /tmp/openjdk.tar.gz.sig ${BINARY_URL}.sig; export GNUPGHOME="$(mktemp -d)"; gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 3B04D753C9050D9A5D343F39843C48A565F8F04B; gpg --batch --verify /tmp/openjdk.tar.gz.sig /tmp/openjdk.tar.gz; rm -rf "${GNUPGHOME}" /tmp/openjdk.tar.gz.sig; echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; mkdir -p "$JAVA_HOME"; tar --extract --file /tmp/openjdk.tar.gz --directory "$JAVA_HOME" --strip-components 1 --no-same-owner ; rm -f /tmp/openjdk.tar.gz; apk del --no-network .fetch-deps; # buildkit
# 2026-02-06 06:21:06 0.00B 设置环境变量 JAVA_VERSION
ENV JAVA_VERSION=jdk-25.0.2+10
# 2026-02-06 06:21:06 19.05MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apk add --no-cache fontconfig ttf-dejavu ca-certificates p11-kit-trust musl-locales musl-locales-lang tzdata coreutils openssl ; rm -rf /var/cache/apk/* # buildkit
# 2026-02-06 06:21:06 0.00B 设置环境变量 LANG LANGUAGE LC_ALL
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
# 2026-02-06 06:21:06 0.00B 设置环境变量 PATH
ENV PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-02-06 06:21:06 0.00B 设置环境变量 JAVA_HOME
ENV JAVA_HOME=/opt/java/openjdk
# 2026-01-28 09:18:04 0.00B 设置默认要执行的命令
CMD ["/bin/sh"]
# 2026-01-28 09:18:04 8.44MB 复制文件或目录到容器中
ADD alpine-minirootfs-3.23.3-x86_64.tar.gz / # buildkit
镜像信息
{
"Id": "sha256:759cc77760db306890f2f8a945a37875e5f6c300c8de767fcd7cb441ec681491",
"RepoTags": [
"grimmory/grimmory:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grimmory/grimmory:latest"
],
"RepoDigests": [
"grimmory/grimmory@sha256:9014247f591074529894f81115ca40f899db697e89f72c2fe91ec530e3f19597",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grimmory/grimmory@sha256:a374e3cab297fd9202cff09102df8799bbadf74ba0e86309d03b8b6589f51dd5"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-03-21T01:58:24.208313106Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"6060/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"JAVA_HOME=/opt/java/openjdk",
"LANG=en_US.UTF-8",
"LANGUAGE=en_US:en",
"LC_ALL=en_US.UTF-8",
"JAVA_VERSION=jdk-25.0.2+10",
"JAVA_TOOL_OPTIONS=-XX:+UseG1GC -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:MaxRAMPercentage=75.0 -XX:+ExitOnOutOfMemoryError",
"APP_VERSION=v2.3.0",
"APP_REVISION=c335c7bdc6611e1238e171fe60fda53573d23c33"
],
"Cmd": [
"java",
"-jar",
"/app/app.jar"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/",
"Entrypoint": [
"/usr/local/bin/entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"org.opencontainers.image.base.name": "docker.io/library/eclipse-temurin:25-jre-alpine",
"org.opencontainers.image.description": "Grimmory: a self-hosted, multi-user digital library with smart shelves, auto metadata, Kobo and KOReader sync, BookDrop imports, OPDS support, and a built-in reader for EPUB, PDF, and comics.",
"org.opencontainers.image.documentation": "https://grimmory.org/docs/getting-started",
"org.opencontainers.image.licenses": "AGPL-3.0",
"org.opencontainers.image.revision": "c335c7bdc6611e1238e171fe60fda53573d23c33",
"org.opencontainers.image.source": "https://github.com/grimmory-tools/grimmory",
"org.opencontainers.image.title": "Grimmory",
"org.opencontainers.image.url": "https://github.com/grimmory-tools/grimmory",
"org.opencontainers.image.version": "v2.3.0"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 477210454,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/8834b033d72dedb3b99a36c6c6b35757ffdc214ebea7a589df0f88a56b107090/diff:/var/lib/docker/overlay2/adb10cd625e090c8422f887796b605ced881db25657a2c0d91b1d51c567ebb00/diff:/var/lib/docker/overlay2/95658fff3ad48c318d69c73c0432da1fa942a54d319aa6a1e8e13da1c6d45823/diff:/var/lib/docker/overlay2/b781ae6cb4c02d70780ac4a8bf34047fff16fc151622428a1a083e525acbb0d7/diff:/var/lib/docker/overlay2/3352b452094be6ba5be3363499b03ca2e05a42a9f17c69b4763ee17989b77cbf/diff:/var/lib/docker/overlay2/a7f4e9938bac4334a9edc9d40c5640659cafe5b16b5f3964a375fc1425403991/diff:/var/lib/docker/overlay2/540e4b6727e21fb35f32f2319e9c5124444aba2f37224594c55058831ba95e24/diff:/var/lib/docker/overlay2/73af80f87388ee76507006c206c7b92791cb9e4deee9c613bd7240ec75260e59/diff:/var/lib/docker/overlay2/0370c3d8d1b4d6a7f8697e7d8a7f8195de34122abbf0a7b9484139015fd76c21/diff:/var/lib/docker/overlay2/9c1e323f4c26a4f24095b7a15c03cb6bc80cd7187a2dd3880812da9700a59621/diff:/var/lib/docker/overlay2/e2168e4415fa23efb4974948fb84e5824148b54e06c7e4b305be1f21b0d6d57e/diff",
"MergedDir": "/var/lib/docker/overlay2/428efa901b5e91fe5ad09b2f71773251e2dcc62e37db436dd11b1c932b820900/merged",
"UpperDir": "/var/lib/docker/overlay2/428efa901b5e91fe5ad09b2f71773251e2dcc62e37db436dd11b1c932b820900/diff",
"WorkDir": "/var/lib/docker/overlay2/428efa901b5e91fe5ad09b2f71773251e2dcc62e37db436dd11b1c932b820900/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:989e799e634906e94dc9a5ee2ee26fc92ad260522990f26e707861a5f52bf64e",
"sha256:4536f518b369c2341af3034dfe79dee6e4b828c2af0d009cfb4fa7b8adb596f7",
"sha256:5bd10eab4fc4c29c2b87383ab025cbdee6dd0c9f2ba9911dd713cb49a9ac2302",
"sha256:f4a82f9405dde15e7e4284607b86e4d08f65397749870779c307e3b77b2246c0",
"sha256:67c973a86538f0854e374538a897dbb774f636d40d8ec7289ed4fd7c611dca81",
"sha256:1e65689f1f24cb4c0692512b838fc2a7ceb1d417cdd0bb6c2d901668a5072186",
"sha256:0f37bae4377e24c4b1a9988411e6db50018d6de4e79b1248e291b2d3e457eca4",
"sha256:c420d4be9244cd46c4fb547a5d518bd108e7ca0010b87191649f2082f316019b",
"sha256:79d9a97563787d41f87a1964ae5d11442e33f53e090839405501f8bfab5c5e94",
"sha256:289e7888713740895db8da2ce071cdd72fe852f09a81da0fee7e6fc2bea2f7ff",
"sha256:8ac1f268fd9f293754cd33e79567631c0a37fe8db8f09f0de15422becb4f5a73",
"sha256:9307d8e1b852dbdd59d88d02c43dac7611f27127a007eeec4911d69e2c603593"
]
},
"Metadata": {
"LastTagTime": "2026-04-06T11:43:46.78279816+08:00"
}
}