Trying to run couchbase lite client in a docker failing

Hello,

I’m trying to run a couchbase lite client built with the java sdk in a docker container.
Using debian based image
But getting the following error

Caused by: java.lang.Exception: java.lang.UnsatisfiedLinkError: /app/CouchbaseLiteTemp/f462ad0c1546153e8e5386311d346324/libLiteCore.so: libicuuc.so.71: cannot open shared object file: No such file or directory
at com.couchbase.lite.internal.NativeLibrary.loadLibrary(NativeLibrary.java:153) ~[couchbase-lite-java-3.2.3.jar!/:na]
… 50 common frames omitted
Caused by: java.lang.UnsatisfiedLinkError: /app/CouchbaseLiteTemp/f462ad0c1546153e8e5386311d346324/libLiteCore.so: libicuuc.so.71: cannot open shared object file: No such file or directory
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method) ~[na:na]
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:321) ~[na:na]
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:187) ~[na:na]
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:129) ~[na:na]
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2245) ~[na:na]
at java.base/java.lang.Runtime.load0(Runtime.java:767) ~[na:na]
at java.base/java.lang.System.load(System.java:1624) ~[na:na]
at com.couchbase.lite.internal.NativeLibrary.loadLibrary(NativeLibrary.java:151) ~[couchbase-lite-java-3.2.3.jar!/:na]
… 50 common frames omitted

Following is our dockerfile

---- Stage 1: Build JAR with Gradle (Java 21) ----

FROM gradle:8.9-jdk21 AS builder
WORKDIR /app

Copy parent gradle files + wrapper (needed for build)

COPY settings.gradle ./
COPY gradle ./gradle

Copy all modules

COPY . .

Build only your Spring Boot submodule jar (replace app-module with actual module name)

RUN gradle :app:bootJar --no-daemon

---- Stage 2: Run the JAR (Java 21) ----

FROM bitnami/java:latest
WORKDIR /app

Install deps required by Couchbase Lite native libraries

RUN apt-get update && apt-get install -y
libicu-dev
libz1
libcurl4
&& rm -rf /var/lib/apt/lists/*

#ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cblib/support/linux/x86_64/libicu/
#ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cblib/support/linux/x86_64/libz/
#ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cblib/support/linux/x86_64/libc++/

#export ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu

Copy the generated jar from the submodule

COPY --from=builder /app/app/build/libs/*.jar app.jar

Run Spring Boot app

ENTRYPOINT [“java”, “-jar”, “app.jar”]

CMD [“tail”, “-f”, “/dev/null”]

You cannot simply install libicu-dev, you need to bring in the exact version of ICU required as described in the docs