Есть два плагина 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, являются их собственными. |