У меня есть приложение Maven Java, которое я пытаюсь докеризовать. Пока у меня есть следующий файл докеров, который я скопировал из этого ответа.
#
# Build stage
#
FROM maven:3.6.0-jdk-11-slim AS build
COPY src /home/app/src
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean install
EXPOSE 8080 9990
COPY --from=build /usr/src/app/target/helloworld-1.0.0-SNAPSHOT.jar /opt/jboss/jboss-eap-6.2/standalone/deployments/
Это было бы хорошо, если бы мое приложение было проектом с одним модулем, однако, поскольку оно многомодульное, я предполагаю, что не могу просто использовать COPY src /home/app/src
.
Как я могу изменить свой файл докеров для учета моего многомодульного проекта?
Я пробовал следующее:
#
# Build stage
#
FROM maven:3.6.0-jdk-11-slim AS build
COPY module1 /home/app
COPY module2 /home/app
COPY module3 /home/app
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean install
EXPOSE 8080 9990
COPY --from=build /usr/src/app/target/helloworld-1.0.0-SNAPSHOT.jar /opt/jboss/jboss-eap-6.2/standalone/deployments/
Однако это дает ошибку на этапе mvn clean install
:
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for myapp:21.01-SNAPSHOT: Could not find artifact jee6:pom:1.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 8, column 10
Обратите внимание, что jee6:pom:1.0.1-SNAPSHOT
из моей локальной папки m2.
У вас может быть дополнительный модуль интеграции с зависимостью от других модулей, который отвечает за сбор компонентов в образ Docker. Также хорошее место для размещения интеграционных тестов.
Я попытался скопировать все модули и построить их. не могли бы вы проверить редактирование вопроса на предмет ошибки.
Не могли бы вы дать больше информации об этом? Спасибо
@Raedwald Я пытался сделать то, что вы посоветовали, поместить все модули в модуль интеграции, но я все еще не могу собрать его в докере. вот мой вопрос stackoverflow.com/questions/70273777/…
Я бы просто использовал плагин maven jib вместо того, чтобы вручную создавать файл Dockerfile. Гораздо проще, и я думаю, что он должен работать и с многомодульными проектами.
У вас есть пример использования?
Глядя на свои коды, вы пытаетесь развернуть его на сервере приложений JBoss, верно?
Это усложняет задачу, поскольку сам сервер приложений Jboss должен находиться в образе докера. Кроме того, вариант использования образов Docker в этом случае не столь убедителен, поскольку образы Docker должны быть максимально компактными. Ваш подход к образу докера, вероятно, будет иметь больше смысла, если вы используете что-то вроде Spring Boot, например, для запуска своего приложения.
Хорошо, в таком случае, что бы вы порекомендовали? Я хочу построить проект maven, а затем запустить его на eap
Затем просто используйте типичное развертывание EAR или WAR. Забудьте о докеризации. Если вы не используете EJB, то проект WAR работает лучше всего, потому что он намного проще. Вот ссылка, которую вы можете использовать: sgaemsolutions.com/2019/06/…
Отвечает ли это на ваш вопрос? докер с maven jar