Я создаю Java-приложение, которое я буду размещать в Docker-контейнере.Частью этого приложения является использование этой библиотеки:
https://github.com/wooio/htmltopdf-java
Он берет URL-адрес и преобразует его в документ PDF.Однако при запуске файла .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:
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
Но когда SSHing в контейнер Docker и заглядывает в tmp
-файл io.woo.htmltopdf
-библиотека в списке.Путь tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so
также существует в контейнере Docker.
Может быть что-то с настройками пути?Что приложение Java как-то не использует правильный путь?
Запускаемый app.jar
находится в корневой папке, где также находится папка tmp
, поэтому она должна найти ее?