From 0c79d681de30f5e6cc935f801e882a436973d582 Mon Sep 17 00:00:00 2001 From: Luca Foppiano Date: Thu, 12 Mar 2026 21:51:37 +0100 Subject: [PATCH] fix: dockerfile for Linux ARM Signed-off-by: Luca Foppiano --- Dockerfile.crf | 15 ++++++++++----- grobid-service/scripts/run-service.sh | 9 ++++++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Dockerfile.crf b/Dockerfile.crf index 3e6d43ea4e..422551fb9c 100644 --- a/Dockerfile.crf +++ b/Dockerfile.crf @@ -45,19 +45,23 @@ COPY grobid-core/ ./grobid-core/ COPY grobid-service/ ./grobid-service/ COPY grobid-trainer/ ./grobid-trainer/ +ARG TARGETARCH # Layer 6: .git for revision embedding (as late as possible, just before build) COPY .git/ ./.git # cleaning unused native libraries before packaging RUN rm -rf grobid-home/pdf2xml -RUN rm -rf grobid-home/pdfalto/win-* -RUN rm -rf grobid-home/lib/win-* +RUN rm -rf grobid-home/pdfalto/win-* grobid-home/pdfalto/mac-64 grobid-home/pdfalto/mac_arm-64 grobid-home/pdfalto/lin-32 +RUN rm -rf grobid-home/lib/win-* grobid-home/lib/mac-64 grobid-home/lib/mac_arm-64 grobid-home/lib/lin-32 +RUN if [ "$TARGETARCH" = "arm64" ]; then \ + rm -rf grobid-home/pdfalto/lin-64 grobid-home/lib/lin-64; \ + else \ + rm -rf grobid-home/pdfalto/lin_arm-64 grobid-home/lib/lin_arm-64; \ + fi # cleaning Delft models RUN rm -rf grobid-home/models/*-BidLSTM_* -ENV GROBID_SERVICE_OPTS="-Djava.library.path=grobid-home/lib/lin-64:grobid-home/lib/lin-64/jep" - RUN ./gradlew assemble --no-daemon --info --stacktrace WORKDIR /opt/grobid @@ -89,7 +93,8 @@ WORKDIR /opt/grobid COPY --from=builder /opt/grobid . -ENV GROBID_SERVICE_OPTS="-Djava.library.path=grobid-home/lib/lin-64:grobid-home/lib/lin-64/jep --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED" +ENV LD_LIBRARY_PATH=grobid-home/lib/lin-64:grobid-home/lib/lin_arm-64 +ENV GROBID_SERVICE_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED" CMD ["./grobid-service/bin/grobid-service"] diff --git a/grobid-service/scripts/run-service.sh b/grobid-service/scripts/run-service.sh index 2584681d97..8049e8f0fc 100755 --- a/grobid-service/scripts/run-service.sh +++ b/grobid-service/scripts/run-service.sh @@ -9,4 +9,11 @@ config=$1 echo "Starting grobid service with config $config" -java -Djava.library.path=../grobid-home/lib/lin-64:../grobid-home/lib/lin-64/jep -jar build/libs/grobid-service-*-onejar.jar server $config || exit $? +ARCH=$(uname -m) +if [ "$ARCH" = "aarch64" ]; then + LIB_DIR="../grobid-home/lib/lin_arm-64" +else + LIB_DIR="../grobid-home/lib/lin-64" +fi + +java -Djava.library.path="$LIB_DIR" -jar build/libs/grobid-service-*-onejar.jar server $config || exit $?