Автоматическая сборка Docker Cloud - нет такого файла или каталога
Запуск сборки проекта на основе Maven, но она не удалась.
Причина в no such file or directory
когда он пытается найти банку.
Dockerfile:
FROM frolvlad/alpine-oraclejdk8:slim
FROM maven:3.5.2-jdk-8-slim
VOLUME /tmp
CMD ['mvn package']
ADD target/app-0.1.0-SNAPSHOT.jar app.jar <-- fails there
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
Выход журнала:
...
Removing intermediate container 60da937dde8a
Step 4/8 : CMD ['mvn package']
---> Running in 8ba364ba9d98
---> 4a722569d1a7
Removing intermediate container 8ba364ba9d98
Step 5/8 : ADD target/app-0.1.0-SNAPSHOT.jar app.jar
ADD failed: stat /var/lib/docker/tmp/docker-builder1534563/target/app-0.1.0-SNAPSHOT.jar: no such file or directory
ERROR: Build failed: ADD failed: stat /var/lib/docker/tmp/docker-builder1534563/target/app-0.1.0-SNAPSHOT.jar: no such file or directory
ERROR: Build failed with exit code 2
Поиграл с разными настройками, но он все равно не работает, несмотря на то, что имя приложения совпадает с именем встроенного фляги.
Как исправить проблему?
1 ответ
Этот вопрос IMO не имеет никакого отношения к Spring Boot и связан с Docker. В общем, пожалуйста, поделитесь дополнительной информацией о том, как именно вы бежите docker build
команда, из какой директории и где находится ваша Dockerfile
проживать точно. Без этой информации мы можем только строить догадки и давать общие ответы:
Чтобы представить некоторые моменты для рассмотрения: Docker ничего не знает о структуре Maven вашего проекта, поэтому вы можете просто сохранить следующую схему:
<some_dir>
|____ Dockerfile
|____ app-0.1.0-SNAPSHOT.jar
Затем вы можете запустить команду сборки docker из этого каталога, и это должно работать. Тогда вы можете поэкспериментировать с target
директории, и как только вы поймете, когда он работает, а когда нет в текущей раскладке папок, есть вероятность, что с помощью этой практики вы очень быстро найдете ответ.