Перейти к основному содержимому

Поиск по CooLWJ

选择搜索范围,输入关键词后按回车。

Язык

3 лучших способа сборки Docker-образов для SpringBoot

В этой статье представлены 3 способа сборки приложения SpringBoot в образ Docker с помощью Maven.

(1)Использование встроенного в spring-boot-maven-plugin build-image.

(2)Использовать предоставляемый Google jib-maven-plugin。

(3)Использование dockerfle-maven-plugin。

Приложение Spring Boot

Для удобства практической работы потребуется проект Spring Boot.

Адрес демонстрационного проекта:

https://github.com/davelms/me...

Окружение проекта:

  • Java 11

  • Maven 3.6.3

Использование mvn package можно успешно собрать jar-пакет.

Также работает корректно:

java -jar target/demo-application-0.0.1-SNAPSHOT.jar

Тестовая страница:

http://localhost:8080/hello

Демонстрационный проект готов, теперь опробуем 3 способа сборки образа.

I、build-image плагина Spring Boot для Maven

В Spring Boot уже включён собственный плагин для сборки образов Docker, поэтому нам ничего не нужно менять:он находится в spring-boot-starter-parent в pom.xml.

Вам не нужно писать Dockerfile или беспокоиться о чём-либо ещё: плагин всё сделает за вас, в том числе учтёт рекомендации Spring по безопасности, памяти, производительности и другим вопросам.

Достаточно просто выполнить:

mvn spring-boot:build-image

После завершения выполнения появится сообщение об успехе:

Тестирование запуска контейнера:

docker run -p 9090:8080 -t demo-application:0.0.1-SNAPSHOT

Примечание:здесь сопоставленный локальный порт — 9090。

Два、jib-maven-plugin

Jib — плагин для Maven и Gradle, предназначенный для создания образов Docker.

У этого плагина есть одна очень заметная особенность:Локальная установка Docker не требуется,что очень удобно для непрерывной интеграции: Jib может напрямую отправлять образы в указанный реестр Docker.

Jib также не требует написания Dockerfile.

Пользоваться этим тоже очень удобно:не нужно менять код, и можно обойтись без изменений в pom.xml.

Достаточно выполнить:

mvn compile com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild
  • mvn compile

— знакомая нам команда компиляции maven.

  • com.google.cloud.tools:jib-maven-plugin:2.3.0

Указано использование плагина Jib

  • dockerBuild

— цель выполнения плагина Jib,dockerBuild Указано, что Jib должен использовать установленный у нас локально Docker.

После завершения выполнения появится сообщение об успехе:

Тест запуска контейнера:

docker run -p 9091:8080 -t demo-application:0.0.1-SNAPSHOT

Примечание:здесь сопоставленный локальный порт — 9091。

Три、dockerfile-maven-plugin

Этот плагин требует, чтобы мы написали Dockerfile; в проекте Domo он уже подготовлен.

Dockerfile необходимо разместить в корневом каталоге проекта, рядом с pom.xml.

Затем нужно добавить в pom.xml настройки, чтобы указать репозиторий, метку tag, а также определённые в приведённом выше Dockerfile JAR_FILE。

Выполнить mvn package автоматически начнётся сборка образа, а после завершения выполнения появится сообщение:

изображение

Запуск контейнера:

docker run -p 9092:8080 -t demo-application:0.0.1-SNAPSHOT

Обратите внимание:сопоставленный порт локального компьютера — 9092。

Итоги

Из этих 3 способов удобнее всего встроенный способ SpringBoot:ничего не нужно делать самостоятельно, им можно пользоваться сразу.

Особенно выделяется Jib: он не требует локальной установки Docker, позволяет отправлять образы прямо в указанный реестр и при этом очень прост в использовании.

Похоже, больше всего хлопот доставляет плагин dockerfile-maven-plugin: нужно написать Dockerfile и добавить настройки,Однако,на деле он удобнее всего, поскольку первые 2 зависят от сетевого окружения(вы понимаете), и даже при настроенном зеркале Docker будут возникать ошибки — можете попробовать сами.

Тематическая иллюстрация о Spring Boot, Maven и сборке образов Docker


Комментарии

Отправка

Выберите оформление

Выбранное оформление применяется ко всему сайту.