Java - Docker 无法安装依赖项 - Html2Pdf 库

标签 java spring docker dockerfile html2pdf

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

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

它获取 URL 并将其转换为 PDF 文档。但是,当通过 docker 运行 .jar 文件时,我得到了它缺少 native 依赖项的错误:

java.lang.UnsatisfiedLinkError: 无法加载库 '/tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so': native 库 (tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so) 在资源路径中找不到

这在上面链接的最后一部分中有记录,它需要这些库才能正确运行:

  • libc6(或 glibc) libx11 libxext libxrender libstdc++ libssl1.0 自由字体配置

我已经修改了我的 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) 在资源路径中找不到

但是当通过 SSH 连接到 Docker 容器并查看 tmp 文件夹时,列出了 io.woo.htmltopdf 库。 tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so 路径也存在于 docker 容器中。

会不会是路径设置的问题? Java 应用程序没有以某种方式使用正确的路径?

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

最佳答案

我通过使用 native wkhtmltopdf 库和 wkhtmltopdf java wrapper 设法解决了这个问题。 .

关于Java - Docker 无法安装依赖项 - Html2Pdf 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55020264/

相关文章:

selenium - Codeception Web 驱动程序(Docker 上的 Selenium)测试无法正常工作,因为无法看到其他容器(但在我的开发机器上工作?!)

c# - 即使在 .NET Core 控制台应用程序中使用 Console.ReadLine(),docker 容器也会立即退出

java - 手动创建Resultset/CachedRowSet

java - 防止 SimpleDateFormat 将字符串与无关字符匹配

docker - supervisord 禁用日志文件或使用 logfile=/dev/stdout

java - 如何使用Spring data JPA保存双向关联而不进行级联?

java - 使用 Spring 和 Jackson 将 Json 数组解析为 Pojo?

java - 在继承中使用异常

java - 如何在 Hibernate 中插入外键定义为 Long 的实体?

java - 在一个类中收集多个查询参数