我正在构建将在Docker容器中托管的Java应用程序。此应用程序的一部分是使用此库:

https://github.com/wooio/htmltopdf-java

它采用一个URL并将其转换为PDF文档。但是,当通过docker运行.jar文件时,出现以下错误:缺少本地依赖项:
java.lang.UnsatisfiedLinkError: Unable to load library '/tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so': Native library (tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so) not found in resource path
上面链接的最后部分对此进行了说明,它需要这些库才能正确运行:

  • libc6(或glibc)libx11 libxext libxrender libstdc++ libssl1.0
    freetype fontconfig

  • 我已经修改了Dockerfile尝试在docker build上安装这些依赖项:
    FROM openjdk:8-jdk-alpine
    
    RUN sh -c 'apk update && apk add libssl1.0 libx11 libxext libxrender libstdc++ freetype fontconfig'
    
    COPY server/target/server-0.0.1-SNAPSHOT.jar app.jar
    
    ENTRYPOINT ["java", "-jar", "app.jar"]
    

    我是Docker的新手,但我在github repo问题中找到了此代码段。但是我仍然无法使其正常工作。

    您能在这里发现为什么我无法运行该程序的问题吗?

    编辑:

    我仍然收到错误java.lang.UnsatisfiedLinkError: Unable to load library '/tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so': Native library (tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so) not found in resource path
    但是,当SSH进入Docker容器并查看tmp -folder时,会列出io.woo.htmltopdf -library。路径tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so也存在于Docker容器中。

    可能是路径设置的东西吗? Java应用程序未使用正确的路径吗?

    正在运行的app.jar位于根文件夹中,该文件夹也位于tmp文件夹中-因此它应该找到它?

    最佳答案

    我设法通过使用本机wkhtmltopdf库和wkhtmltopdf java wrapper来解决此问题。

    07-24 13:44