quarkiverse / quarkus-opencv

OpenCV extension for Quarkus
Apache License 2.0
6 stars 4 forks source link

Native docker image not working #156

Open dcdh opened 3 months ago

dcdh commented 3 months ago

Hello

When running a docker container in native the application failed to start.

ERROR: Failed to start application (with profile [prod])
java.lang.RuntimeException: Failed to start quarkus
        at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
        at io.quarkus.runtime.Application.start(Application.java:101)
        at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
        at io.quarkus.runner.GeneratedMain.main(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: Can't load library: /tmp/opencv_openpnp9789802477543039712/nu/pattern/opencv/linux/x86_64/libopencv_java481.so
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.jdk.NativeLibrarySupport.loadLibraryAbsolute(NativeLibrarySupport.java:100)
        at java.base@21.0.2/java.lang.ClassLoader.loadLibrary(ClassLoader.java:114)
        at java.base@21.0.2/java.lang.Runtime.load0(Runtime.java:852)
        at java.base@21.0.2/java.lang.System.load(System.java:2025)
        at nu.pattern.OpenCV$LocalLoader.<init>(OpenCV.java:330)
        at nu.pattern.OpenCV$LocalLoader.<init>(OpenCV.java:326)
        at nu.pattern.OpenCV$LocalLoader$Holder.<clinit>(OpenCV.java:336)
        at nu.pattern.OpenCV$LocalLoader.getInstance(OpenCV.java:340)
        at nu.pattern.OpenCV.loadLocally(OpenCV.java:323)
        at io.quarkiverse.opencv.runtime.OpenCVRecorder.loadOpenCVLibrary(OpenCVRecorder.java:10)

Steps to reproduce:

  1. git clone https://github.com/dcdh/opencv-sample.git
  2. mvn clean install -Dquarkus.container-image.build=true -Dnative
  3. docker run damien/opencv-sample:1.0.0-SNAPSHOT

Additional information:

Regards,

Damien

dcdh commented 3 months ago

I was able to find a quick fix it by using fedora:38 image. (I run fedora 38 on my workstation and running it natively is ok).

In Dockerfile.native I have changed FROM registry.access.redhat.com/ubi8/ubi-minimal:8.9 to FROM fedora:38

dcdh commented 3 months ago

Maybe I should build this way : mvn clean install -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=docker