镜像构建历史
# 2026-03-21 09:58:23 0.00B 设置默认要执行的命令
CMD ["java" "-jar" "/app/app.jar"]
# 2026-03-21 09:58:23 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
# 2026-03-21 09:58:23 0.00B 声明容器运行时监听的端口
EXPOSE [6060/tcp]
# 2026-03-21 09:58:23 0.00B 定义构建参数
ARG BOOKLORE_PORT=6060
# 2026-03-21 09:58:23 0.00B 设置环境变量 APP_VERSION APP_REVISION
ENV APP_VERSION=v2.3.0 APP_REVISION=c335c7bdc6611e1238e171fe60fda53573d23c33
# 2026-03-21 09:58:23 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:23 0.00B 定义构建参数
ARG APP_REVISION=c335c7bdc6611e1238e171fe60fda53573d23c33
# 2026-03-21 09:58:23 0.00B 定义构建参数
ARG APP_VERSION=v2.3.0
# 2026-03-21 09:58:23 104.64MB 复制新文件或目录到容器中
COPY /workspace/booklore-api/app.jar /app/app.jar # buildkit
# 2026-03-21 09:04:06 3.67MB 复制新文件或目录到容器中
COPY /kepubify /usr/local/bin/kepubify # buildkit
# 2026-03-21 09:04:06 107.88MB 复制新文件或目录到容器中
COPY /ffprobe /usr/local/bin/ffprobe # buildkit
# 2026-03-21 04:38:45 1.51MB 复制新文件或目录到容器中
COPY /usr/bin/unrar-alpine /usr/local/bin/unrar # buildkit
# 2026-03-21 04:38:45 1.23KB 执行命令并创建新的镜像层
RUN /bin/sh -c chmod +x /usr/local/bin/entrypoint.sh # buildkit
# 2026-03-21 04:38:45 1.23KB 复制新文件或目录到容器中
COPY packaging/docker/entrypoint.sh /usr/local/bin/entrypoint.sh # buildkit
# 2026-03-21 04:38:44 3.12MB 执行命令并创建新的镜像层
RUN /bin/sh -c apk add --no-cache su-exec libstdc++ libgcc && mkdir -p /bookdrop # buildkit
# 2026-03-21 04:38:44 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:20:17 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/__cacert_entrypoint.sh"]
# 2026-02-06 06:20:17 5.31KB 复制新文件或目录到容器中
COPY --chmod=755 entrypoint.sh /__cacert_entrypoint.sh # buildkit
# 2026-02-06 06:20:17 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; echo "Verifying install ..."; echo "java --version"; java --version; echo "Complete." # buildkit
# 2026-02-06 06:20:17 194.69MB 执行命令并创建新的镜像层
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:20:12 0.00B 设置环境变量 JAVA_VERSION
ENV JAVA_VERSION=jdk-25.0.2+10
# 2026-02-06 06:20:12 20.66MB 执行命令并创建新的镜像层
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:20:12 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:20:12 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:20:12 0.00B 设置环境变量 JAVA_HOME
ENV JAVA_HOME=/opt/java/openjdk
# 2026-01-28 09:18:09 0.00B 设置默认要执行的命令
CMD ["/bin/sh"]
# 2026-01-28 09:18:09 8.70MB 复制文件或目录到容器中
ADD alpine-minirootfs-3.23.3-aarch64.tar.gz / # buildkit
镜像信息
{
"Id": "sha256:fb8e6ebb75418eff6eb19a53e452f9249c37e20e5af3cb178be03c07a80ec97c",
"RepoTags": [
"grimmory/grimmory:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grimmory/grimmory:latest-linuxarm64"
],
"RepoDigests": [
"grimmory/grimmory@sha256:9014247f591074529894f81115ca40f899db697e89f72c2fe91ec530e3f19597",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grimmory/grimmory@sha256:f4bbd95d760deb64ac75097064662260cfc6b48edc9c3981929a3d2688e8b80a"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-03-21T01:58:23.156240972Z",
"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": "arm64",
"Os": "linux",
"Size": 444880691,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/0ce6d27cf8fd62d789fe0f9d3cdff68ef38d70296347ad333b64dc9405d11a8e/diff:/var/lib/docker/overlay2/f587a75e39b391cf2e44c3a662ada03a006377181c21a61029e0e346d85d2cfa/diff:/var/lib/docker/overlay2/eef02e7c60f77e3e8143978ed1d5c3598b4f558cf741bae33696bd983979a5d3/diff:/var/lib/docker/overlay2/5e87edd2259760bf5da2b5a74170da08be691aa0a16c2a77b577113bb6b52798/diff:/var/lib/docker/overlay2/2663eb1a16405fc093489d1916f37c5d684f23a7c0e03c3be28b2a71d722ce83/diff:/var/lib/docker/overlay2/f210664c7a81850c9ccce09e6d4225a46de9c090572c4e3310d6e0d66d285efd/diff:/var/lib/docker/overlay2/f7c516a08a8e9e209db810fec74d6ac02a6b9217d64f2ca9f673dd173199742f/diff:/var/lib/docker/overlay2/be87d9479a17644363e7bd63e409c4ded9e125aa5565c493bc832e94d137768f/diff:/var/lib/docker/overlay2/9913a5df9aa5a28814b1c25625537f9aeabc729dd4a61e09e4ec50b96502a5aa/diff:/var/lib/docker/overlay2/a1dfd3feb9497920562431ecaa8783b0d0ea37bc75a3ff464a52fc5f0aa9bc68/diff:/var/lib/docker/overlay2/ff0995ec480e8121cc73c61e085659eda4ac3590bc4315bb743e7dd2e5804ab1/diff",
"MergedDir": "/var/lib/docker/overlay2/2ac1ffc51250a49466736635aa2332f53fc0616da61670abb9abb17fce8ede6e/merged",
"UpperDir": "/var/lib/docker/overlay2/2ac1ffc51250a49466736635aa2332f53fc0616da61670abb9abb17fce8ede6e/diff",
"WorkDir": "/var/lib/docker/overlay2/2ac1ffc51250a49466736635aa2332f53fc0616da61670abb9abb17fce8ede6e/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:45f3ea5848e8a25ca27718b640a21ffd8c8745d342a24e1d4ddfc8c449b0a724",
"sha256:9ff3c6d5a2d9e9471e0003970b3df7d3c8a2aef052ec5f13b3d0cba1b939caf6",
"sha256:9c33b182b86fffcf67e95634c0481be1c91d269db9b9e16c7dc96df79050c2fc",
"sha256:5d01d0befeeed237fcd82fe59c3921a625a02e6d264006d229ba82fae3916f97",
"sha256:508faf4da738462544c43adab97f8f83feaa07f17dad9714f5ac7d650498b7a1",
"sha256:8738450b5b583bd64dab116985f7e687b93348a6886c9327e4e22174d2ca9027",
"sha256:530dd1287a2b3a2573db0f7e147a7d96dbe95a975843bc3402bbe76fc7b08154",
"sha256:34791f61949af28a207039cdf2f18bac72a70e7593dfbdbc974e7bb766452a31",
"sha256:8e881a06339abe43642ed26726ee9050dba80bd6fb430c207118e79c7641a885",
"sha256:61d231b7d591054153a274711b0189ccfcbb96382e7f885de0c072cbaeab3b12",
"sha256:5399b2f211c84a3c382f2bd677cd7d0a77cc66237a59c58d67a82e83cf3dbd20",
"sha256:b7b646e4c5a57bdf6ef1e860f85b914cb70f8d939305ec654a0a6639f7eb18e6"
]
},
"Metadata": {
"LastTagTime": "2026-04-05T22:05:53.79046909+08:00"
}
}