镜像构建历史
# 2026-04-23 05:57:22 0.00B 设置默认要执行的命令
CMD ["java" "--enable-native-access=ALL-UNNAMED" "--enable-preview" "-jar" "/app/app.jar"]
# 2026-04-23 05:57:22 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
# 2026-04-23 05:57:22 0.00B 声明容器运行时监听的端口
EXPOSE [6060/tcp]
# 2026-04-23 05:57:22 0.00B 定义构建参数
ARG BOOKLORE_PORT=6060
# 2026-04-23 05:57:22 0.00B 设置环境变量 APP_VERSION APP_REVISION
ENV APP_VERSION=v3.0.0 APP_REVISION=62434c590dca8f4c03873bb2a0cd341f5b843e75
# 2026-04-23 05:57:22 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=v3.0.0 org.opencontainers.image.revision=62434c590dca8f4c03873bb2a0cd341f5b843e75 org.opencontainers.image.licenses=AGPL-3.0 org.opencontainers.image.base.name=docker.io/library/eclipse-temurin:25-jre-alpine
# 2026-04-23 05:57:22 0.00B 定义构建参数
ARG APP_REVISION=62434c590dca8f4c03873bb2a0cd341f5b843e75
# 2026-04-23 05:57:22 0.00B 定义构建参数
ARG APP_VERSION=v3.0.0
# 2026-04-23 05:57:22 125.81MB 复制新文件或目录到容器中
COPY /workspace/backend/app.jar /app/app.jar # buildkit
# 2026-04-16 14:04:02 3.58MB 复制新文件或目录到容器中
COPY /kepubify /usr/local/bin/kepubify # buildkit
# 2026-04-16 14:04:02 139.54MB 复制新文件或目录到容器中
COPY /ffprobe /usr/local/bin/ffprobe # buildkit
# 2026-04-16 14:04:01 1.25KB 执行命令并创建新的镜像层
RUN /bin/sh -c chmod +x /usr/local/bin/entrypoint.sh # buildkit
# 2026-04-16 14:04:01 1.25KB 复制新文件或目录到容器中
COPY packaging/docker/entrypoint.sh /usr/local/bin/entrypoint.sh # buildkit
# 2026-04-16 14:04:01 25.00B 执行命令并创建新的镜像层
RUN /bin/sh -c ln -s /usr/lib/libarchive.so.13 /usr/lib/libarchive.so # buildkit
# 2026-04-16 14:04:01 4.85MB 执行命令并创建新的镜像层
RUN /bin/sh -c apk add --no-cache su-exec libstdc++ libgcc libarchive && mkdir -p /bookdrop # buildkit
# 2026-04-16 14:04:01 0.00B 设置环境变量 JAVA_TOOL_OPTIONS -XX:ShenandoahGCHeuristics -XX:MaxRAMPercentage -XX:InitialRAMPercentage -XX:HeapDumpPath -XX:MaxMetaspaceSize -XX:ReservedCodeCacheSize -XX:CICompilerCount -XX:ShenandoahUncommitDelay -XX:ShenandoahGuaranteedGCInterval -XX:MaxDirectMemorySize
ENV JAVA_TOOL_OPTIONS=-XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:+UseCompactObjectHeaders -XX:MaxRAMPercentage=60.0 -XX:InitialRAMPercentage=8.0 -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:MaxMetaspaceSize=256m -XX:ReservedCodeCacheSize=48m -Xss512k -XX:CICompilerCount=2 -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication -XX:ShenandoahUncommitDelay=5000 -XX:ShenandoahGuaranteedGCInterval=30000 -XX:MaxDirectMemorySize=256m
# 2026-04-16 04:34:25 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/__cacert_entrypoint.sh"]
# 2026-04-16 04:34:25 5.31KB 复制新文件或目录到容器中
COPY --chmod=755 entrypoint.sh /__cacert_entrypoint.sh # buildkit
# 2026-04-16 04:34:25 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; echo "Verifying install ..."; echo "java --version"; java --version; echo "Complete." # buildkit
# 2026-04-16 04:34:25 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-04-16 04:34:20 0.00B 设置环境变量 JAVA_VERSION
ENV JAVA_VERSION=jdk-25.0.2+10
# 2026-04-16 04:34:20 19.04MB 执行命令并创建新的镜像层
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-04-16 04:34:20 0.00B 设置环境变量 LANG LANGUAGE LC_ALL
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
# 2026-04-16 04:34:20 0.00B 设置环境变量 PATH
ENV PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-04-16 04:34:20 0.00B 设置环境变量 JAVA_HOME
ENV JAVA_HOME=/opt/java/openjdk
# 2026-04-16 04:01:40 0.00B 设置默认要执行的命令
CMD ["/bin/sh"]
# 2026-04-16 04:01:40 8.45MB 复制文件或目录到容器中
ADD alpine-minirootfs-3.23.4-x86_64.tar.gz / # buildkit
镜像信息
{
"Id": "sha256:7dcff6a4136ad6f98830a41d3629c3b85f7ae3df142b255153fbfc39a9a14bf4",
"RepoTags": [
"grimmory/grimmory:v3.0.0",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grimmory/grimmory:v3.0.0"
],
"RepoDigests": [
"grimmory/grimmory@sha256:0130c338d4c1186f2f6b6acdc4a7ee56388dfdab9cb0b9a23ac0fc91b79e7d75",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grimmory/grimmory@sha256:a6a45b77ed675a3271dc284b829e0735e7757872aed730c735c63fb5635c31d8"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-04-22T21:57:22.782091256Z",
"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:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:+UseCompactObjectHeaders -XX:MaxRAMPercentage=60.0 -XX:InitialRAMPercentage=8.0 -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:MaxMetaspaceSize=256m -XX:ReservedCodeCacheSize=48m -Xss512k -XX:CICompilerCount=2 -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication -XX:ShenandoahUncommitDelay=5000 -XX:ShenandoahGuaranteedGCInterval=30000 -XX:MaxDirectMemorySize=256m",
"APP_VERSION=v3.0.0",
"APP_REVISION=62434c590dca8f4c03873bb2a0cd341f5b843e75"
],
"Cmd": [
"java",
"--enable-native-access=ALL-UNNAMED",
"--enable-preview",
"-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": "62434c590dca8f4c03873bb2a0cd341f5b843e75",
"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": "v3.0.0"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 498659765,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/5a1ab5c3efa88bac7ba0933a54614a0146dbf1e6729ae7688e7a1dd59f788af2/diff:/var/lib/docker/overlay2/947daf69a36ec132b5fd42174550b20fe82c29b9da80448d960094a5252c64ec/diff:/var/lib/docker/overlay2/4a40770e05e47919eb45580e36f340a39a63b652096eeb51dc158c452d10e351/diff:/var/lib/docker/overlay2/9c290b94887756cd6e86260bf6a75e3b4657ce22088e861b767280e927c1c2cd/diff:/var/lib/docker/overlay2/e562fd3210304e25ae2e715e1308ccca42f99cf03971d02a4618e709d1c41162/diff:/var/lib/docker/overlay2/2969d2c9430e5d8d39159a15ec9880eef82547a4e1e3fc9d8df1cf27f18c72ef/diff:/var/lib/docker/overlay2/baab92dc5190775d54d9f4c5beac524306f85474edbc860c4905320911cfdbab/diff:/var/lib/docker/overlay2/4c91bb9774d49a442bd827e97d38545357de489fd8859189580dfc4612bb88aa/diff:/var/lib/docker/overlay2/124989c27ebfa5908e5b3156988ca37d421a28328a9b427f6c3659775111daa3/diff:/var/lib/docker/overlay2/13f08c8dd51398c8b9f4e7598c88cd56489ab17ef9ff645888212ef2ab565cb8/diff:/var/lib/docker/overlay2/25979533e2e425f22afcc600ccb45128b109440c7f68049cdcf7fde229f299dd/diff",
"MergedDir": "/var/lib/docker/overlay2/8e28508ce811cf809dc84c355027a55fc3385ccd2c3a0688c7b10f42de0196e4/merged",
"UpperDir": "/var/lib/docker/overlay2/8e28508ce811cf809dc84c355027a55fc3385ccd2c3a0688c7b10f42de0196e4/diff",
"WorkDir": "/var/lib/docker/overlay2/8e28508ce811cf809dc84c355027a55fc3385ccd2c3a0688c7b10f42de0196e4/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:29df493baa13de438d6d2ece3a8333032e0b7b9b9d8cce4ee82194da255f61e1",
"sha256:66154ff3898d3058bb98e933887051bfa8c97d01ada2d6d6c090687ec7d7180e",
"sha256:94de695515daced69f32be9a41e5c3d9d8d1c5470f506246caa9837cedd69ad0",
"sha256:f0bf1308a91d0235eb5ac2d7a22e2a22ede0ab9b810e05da5d254e1d0677896e",
"sha256:4586cbfd9fa5f4205c9c2396b72807895fc771fa2d0ee9b3370c5b353808c5eb",
"sha256:1caa8c8d22a10a1cee036bc05c4d8bd15e6364471a4b26a1bdc4acd34e3a12bf",
"sha256:493a8a24ffb9f3f132603065298ccc897f0f27ca42bf275d7cc9d6d90603cf86",
"sha256:9b0e3e4c2f5a379b8f9212ef9fe7867e6aafcbf6adabf6d3b4ebc860419cda05",
"sha256:5c1bac1c07529200fab1054fa57768ed40b399a94d37d2c9ee4afa7f63521c38",
"sha256:8d8619b0dfb99535ffdeacf3634762c8144c5d5c0b65642609dbd1d645d0e1ab",
"sha256:9fb1c3b0afc9c21c0ecf3899ef4007976ee8c7c6dd93755fd398b608e6166137",
"sha256:c38663dd4baca2d1fc9867593412933622b6453e11933f105521272d12ac8422"
]
},
"Metadata": {
"LastTagTime": "2026-04-24T22:38:31.20693926+08:00"
}
}