Я пытался запустить загрузочное приложение java внутри контейнера Docker. Файл jar (testapp.jar) содержит все зависимости, и одна из них включает в себя библиотеку .so (libjsimplerdma.so). Когда я запускаю образ, он выдает следующие исключения:
java.lang.UnsatisfiedLinkError: /tmp/jxio8802823867088/libjsimplerdma.so: libsimplerdma.so: cannot open shared object file: No such file or directory
Мой Dockerfile имеет:
FROM centos:7
WORKDIR /
RUN yum update -y \
&& yum -y install gcc glibc glibc-common \
&& yum -y install cmake \
&& yum -y install epel-release \
&& yum -y install python python-pip libxslt-devel python-devel libxml2- devel \
&& yum -y install java \
&& yum -y clean all
COPY testapp.jar /var/lib/test-app/testapp.jar
COPY application.properties /var/lib/test-app/application.properties
ADD run-test-app.sh /
USER root
ENTRYPOINT ["/run-test-app.sh"]
А внутри run-test-app.sh у меня есть:
#!/bin/bash
echo "Starting testapp"
cd /var/lib/test-app
java -Djava.library.path=/tmp/ -jar testapp.jar -- spring.config.location=/var/lib/test-app/
testapp.jar включает в себя jtest-rdma.jar, который содержит файл libjsimplerdma.so:
В testapp.jar:
38713 Wed Feb 27 11:55:10 EST 2019 BOOT-INF/lib/jtest-rdma.jar
И у jtest-rdma.jar есть libjsimplerdma.so:
19024 Wed Feb 27 11:55:10 EST 2019 libjsimplerdma.so
Когда я запускаю образ с помощью Docker, я получаю следующие ошибки:
Native code library failed to load
java.lang.UnsatisfiedLinkError: /tmp/jxio8802823867088/libjsimplerdma.so: libsimplerdma.so: cannot open shared object file: No such file or directory
И когда я проверяю /tmp
, я вижу только созданный каталог jxio8802823867088
, но внутри нет файла.
Если я запускаю банку локально (без док-контейнера), она работает нормально.
Я не уверен, что я здесь пропустил?