Сборка Quarkus jvm docker — не удается СКОПИРОВАТЬ дополнительный файл

#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. Убедитесь, что он позволяет копировать все типы файлов, которые вам нужно скопировать. Спасибо.