#spring #docker #jenkins #dockerfile
#spring #docker #дженкинс #dockerfile
Вопрос:
Я пытаюсь получить некоторый опыт работы с Docker и Jenkins и хочу развернуть загрузочный сервер Spring с использованием обеих этих технологий. Но, похоже, я неправильно указал фактическую сборку в Dockerfile:
FROM java:8
EXPOSE 8080
ARG mongoConnection
ARG jwtSecret
ENV MONGODB_CONNECTION=$mongoConnection
ENV JWT_SECRET=$jwtSecret
COPY build/libs/test-server.jar test-server.jar
ENTRYPOINT ["java", "-jar", "test-server.jar"]
Когда я создаю контейнер через Jenkins с помощью следующих команд…
./gradlew cleanBuild
docker build --build-arg mongoConnection=$MONGODB_CONNECTION --build-arg jwtSecret=$JWT_SECRET -t test-server .
docker run -d -p 8080:8080 --name test-server test-server
…docker, похоже, не находит файл .jar. Как бы мне правильно настроить рабочий каталог, чтобы docker мог развернуть сервер? Или мой подход совершенно неверен?
Это точная ошибка:
ОШИБКА КОПИРОВАНИЯ: статистика /var/lib/docker/tmp/docker-builder542655905/build/libs/test-server.jar : нет такого файла или каталога
Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ: Оказывается, файл .jar не был создан, потому что команда ./gradlew cleanBuild была неправильной. Вместо этого это должно было быть gradle clean build
. Это то, что происходит, когда вы всегда создаете только с IntelliJ…
Комментарии:
1. Все, что стоит после
docker-builder
имени каталога, является копией пути, который вы передалиdocker build
(то есть.
); существует ли файл jar по этому пути в вашей локальной системе после запуска сборки Gradle?2. Попробуйте создать и запустить локально, чтобы изолировать, связано ли это вообще с Jenkins. Вероятно, это не так, поскольку вы не используете какие-либо плагины Jenkins.
3. Оказывается, файл .jar не был создан, потому что команда ./gradlew cleanBuild была неправильной. Спасибо за вашу помощь!