#java #spring-boot #docker #gradle
Вопрос:
Сначала я объясню свою ситуацию.
У меня есть проект spring boot в среде aws cloud9 на Github.
В этом проекте spring boot в настоящее время нет папки сборки.
Примерная структура проекта выглядит следующим образом.
eks-workspace spring-backend gradle infra src bulid.gradle.kts Dockerfile gradlew gradlew.bat settings.gradle.kts
В этой ситуации я написал файл Dockerfile следующим образом.
// Dockerfile FROM openjdk:11-jdk COPY gradlew . COPY gradle gradle COPY build.gradle.kts . COPY settings.gradle.kts . COPY src src RUN chmod x ./gradlew RUN ./gradlew bootJar COPY example.jar . EXPOSE 8080 ENTRYPOINT ["java","-jar","/example"]
Чтобы увидеть, где файл jar был сохранен во время процесса сборки докера, я выполнил команду «ВЫПОЛНИТЬ ls-al» и подтвердил, что файл jar был сохранен в «/build/libs/example.jar».
Однако, когда я выполнил инструкцию «COPY/bulid/libs/example.jar /» в файле докеров «ОШИБКА копирования: файл не найден в контексте сборки или расширен.docerignore: статистика example.jar: файл не существует» произошло.
Я не думаю, что это ошибка, когда файл не существует, потому что я не создал отдельный файл .dockerignore, но я не знаю, где находится файл jar во время процесса сборки.
Комментарии:
1.
COPY
копирует файл из внешней среды сборки Docker в образ. Вам нужноRUN cp
это сделать вместо этого?2. @DavidMaze OMG… твой ответ был совершенно правильным… Большое спасибо!!