Есть два плагина maven, которые вы можете использовать, чтобы легко добавить ваш Java Applicatoin в Docker.
Первый плагин, который вы можете использовать, это docker-maven-plugin от Fabric8
Второй — это Docker-Maven-плагин от Spotify.
Позвольте мне показать вам, как это сделать с помощью плагина Fabric8.
Обновите pom.xml
Просто добавьте такую конфигурацию в ваш pom.xml, в части сборки, плагины.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
< plugin > < groupId >io.fabric8</ groupId > < artifactId >docker-maven-plugin</ artifactId > < version >0.20.1</ version > < configuration > < images > < image > < name >${project.name}:${project.version}</ name > < build > < from >openjdk:9</ from > < assembly > < descriptorRef >artifact</ descriptorRef > </ assembly > < ports > < port >8080</ port > </ ports > < cmd >java -jar maven/${project.name}-${project.version}.jar</ cmd > </ build > < run > < ports > < port >8080:8080</ port > </ ports > </ run > </ image > </ images > </ configuration > </ plugin > |
В этом случае я сообщаю плагину использовать базовый тег docker image openjdk 9 и создавать изображение docker по имени $ {project.name} с тегом $ {project.version} . Вы можете, конечно, жестко ввести имя здесь, если вы не хотите, чтобы оно было изменено.
После запуска контейнера он выполнит команду
- java -jar maven / $ {project.name} — $ {project.version} .jar
в моем случае это запустит отдельное веб-приложение. Потому что это веб-приложение, я также выставлю порт 8080 .
Построить образ
Чтобы создать образ Docker, все, что сейчас нужно, это запустить эту команду
1
|
mvn docker:build |
Подключите сборку образа докера к фазе Maven
Иногда создание изображения лучше связать с какой-либо фазой в процессе maven. Для этого вам просто нужно добавить это в плагин
1
2
3
4
5
6
7
8
9
|
< executions > < execution > < id >docker:build</ id > < phase >package</ phase > < goals > < goal >build</ goal > </ goals > </ execution > </ executions > |
Теперь maven получает указание всегда создавать образ докера как часть фазы пакета .
Конечный результат
Полный плагин, добавленный в pom.xml, должен выглядеть следующим образом
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
< plugin > < groupId >io.fabric8</ groupId > < artifactId >docker-maven-plugin</ artifactId > < version >0.20.1</ version > < configuration > < images > < image > < name >${project.name}:${project.version}</ name > < build > < from >openjdk:9</ from > < assembly > < descriptorRef >artifact</ descriptorRef > </ assembly > < ports > < port >8080</ port > </ ports > < cmd >java -jar maven/${project.name}-${project.version}.jar</ cmd > </ build > < run > < ports > < port >8080:8080</ port > </ ports > </ run > </ image > </ images > </ configuration > < executions > < execution > < id >docker:build</ id > < phase >package</ phase > < goals > < goal >build</ goal > </ goals > </ execution > </ executions > </ plugin > |
Рабочий пример
Вы можете проверить все это в действии здесь
Опубликовано на Java Code Geeks с разрешения Владимира Деяновича, партнера нашей программы JCG . Смотрите оригинальную статью здесь: Как Docker-ise ваше Java-приложение с плагином Maven Мнения, высказанные участниками Java Code Geeks, являются их собственными. |