У меня есть Java веб-приложение Spring Boot, которое я хотел бы поместить в контейнер с помощью Docker. У меня проблемы с тем, чтобы команда mvn install
работала во время процесса сборки Docker, потому что мой проект зависит от некоторых других написанных мной проектов Maven, которые установлены в моей локальной папке /.m2
, но недоступны в Maven центральное хранилище. Я бы не хотел добавлять эти локальные проекты в центральный репозиторий publi c Maven, потому что они существуют специально для поддержки этого Spring Boot-приложения, и я хотел бы сохранить их в секрете.
Если бы я не использовал Docker, я мог бы обойти эту проблему, создав JAR с зависимостями и развернув этот .jar
файл. Можно ли как-нибудь включить эти локальные зависимости в мой Docker процесс сборки?
Вот простой Dockerfile, который я пытаюсь запустить:
# Step 1: Build with Maven
FROM maven:3.5-jdk-8-alpine
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN mvn clean install
# Step 2: Run jar file with Java
FROM openjdk:8-alpine
WORKDIR /usr/src/myapp
COPY --from=0 /usr/src/myapp/target/myapp-1.0-SNAPSHOT.jar ./myapp.jar
ENTRYPOINT ["java", "-jar", "myapp.jar"]
Я запускаю эту команду сборки :
docker build -t myspringapp .
И выдается следующее сообщение:
[ERROR] Failed to execute goal on project server: Could not resolve dependencies for project
com.website:myapp:jar:1.0-SNAPSHOT: The following artifacts could not be resolved:
com.website:dependency1:jar:0.1.0, com.website:dependency2:jar:0.1.0,
com.website:dependency3:jar:0.1.0:
Could not find artifact com.website:dependency1:jar:0.1.0 in central
(https://repo.maven.apache.org/maven2) -> [Help 1]
В качестве альтернативы могу ли я просто запустить команду mvn clean install
на моей машине для разработки, чтобы создать файл jar, а затем пропустить всю часть сборки Maven образа Docker? Сможет ли мой контейнер по-прежнему копировать себя в сценарии автоматического масштабирования? Потеряю ли я что-либо, создав проект отдельно от его Docker изображения / контейнера?