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

问题描述 投票:3回答:3

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

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文件夹时,会列出io.woo.htmltopdf-library。路径tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so也存在于docker容器中。

它可能是路径设置的东西吗? Java应用程序没有以某种方式使用正确的路径?

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

java spring docker dockerfile html2pdf
3个回答
2
投票

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


1
投票

我也有高山图像的问题,如果你不介意图像的大小,我会尝试使用openjdk:8作为你提供的图像。


1
投票

Alpine Linux建立在musl libc上,而不是glibc。我的猜测是你的本土图书馆与musl不兼容。

你可以试试openjdk:8-slim。这个是基于Debian构建的,它比基于alpine的图像略大,但它可以运行为glibc构建的库。

您需要使用apt来安装其他软件包,并且需要进行一些研究以找出哪些软件包提供了您需要的库。

尝试使用以下行启动Dockerfile:

FROM openjdk:8-slim

RUN apt-get update && apt-get install -y --no-install-recommends \
      libc6 \
      libx11-6 \
      libxext6 \
      libxrender1 \
      libstdc++ \
      libssl1.0 \
      libfreetype6 \
      fontconfig \
   && apt-get clean \
   && rm -rf /var/lib/apt/lists/*

这会生成1.37 Gb映像,其中大部分来自libstdc ++及其所有依赖项的安装。这里可能有优化的机会(你真的需要完整的C ++ Stdlib才能让你的应用程序正常运行吗?)。如果没有此软件包,图像大小将降至256 Mb。

© www.soinside.com 2019 - 2024. All rights reserved.