#docker #quarkus
#docker #quarkus
Вопрос:
Мне нужно СКОПИРОВАТЬ собственную библиотеку в каталог docker image / usr / lib. Мой проект Quarkus находится в IntelliJ, и я попытался поместить этот двоичный файл .so в папку target / resources и изменил Dockerfile.jvm следующим образом, но файл не был скопирован. Ниже приведено содержимое файла Dockerfile, который Quarkus сгенерировал во время скаффолдинга, я добавил одну строку в раздел КОПИРОВАНИЯ:
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1
ARG JAVA_PACKAGE=java-11-openjdk-headless
ARG RUN_JAVA_VERSION=1.3.8
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'
# Install java and the run-java script
# Also set up permissions for user `1001`
RUN microdnf install curl ca-certificates ${JAVA_PACKAGE}
amp;amp; microdnf update
amp;amp; microdnf clean all
amp;amp; mkdir /deployments
amp;amp; chown 1001 /deployments
amp;amp; chmod "g rwX" /deployments
amp;amp; chown 1001:root /deployments
amp;amp; curl https://repo1.maven.org/maven2/io/fabric8/run-java-
sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o
/deployments/run-java.sh
amp;amp; chown 1001 /deployments/run-java.sh
amp;amp; chmod 540 /deployments/run-java.sh
amp;amp; echo "securerandom.source=file:/dev/urandom" >>
/etc/alternatives/jre/lib/security/java.security
ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0
-Djava.util.logging.manager=org.jboss.logmanager.LogManager"
COPY target/lib/* /deployments/lib/
COPY target/*-runner.jar /deployments/app.jar
#below is the only change I made #
COPY target/resources/calc.so /usr/lib/
#end of my change #
EXPOSE 8080
USER 1001
ENTRYPOINT [ "/deployments/run-java.sh" ]
Я также попытался запустить в корне своего проекта
docker build -f src/main/docker/Dockerfile.jvm -t mylogin/demo:1.0-SNAPSHOT .
Я получаю сообщение об ошибке :
ОШИБКА копирования: stat /var/lib/docker/tmp/docker-builder707527817/target/resources/calc.so: нет такого файла или каталога
Любая помощь приветствуется.
Спасибо
Комментарии:
1. Это сообщение об ошибке обычно означает, что в вашем локальном дереве исходных текстов файл
target/resources/calc.so
не существует. Вам нужно запустить какой-то процесс сборки на вашем хосте, чтобы сначала создать его?2. Я подтвердил, что файл .so существует в папке target / resources . Он копируется из другой папки в target / resources как часть моего шага maven «package».
3. Вы
RUN mvn package
в Dockerfile или за пределами Docker?4. Снаружи. Следуя инструкциям по ссылке , я сначала создаю пакет, который создает целевой каталог, а затем создаю образ docker. Я добавил весь Dockerfile к своему вопросу. Спасибо
Ответ №1:
Это был файл .dockerIgnore, автоматически сгенерированный, когда я скаффолдил приложение Quarkus. Убедитесь, что он позволяет копировать все типы файлов, которые вам нужно скопировать. Спасибо.