глоссарий
докер
Docker — это легкий контейнер, используемый для публикации приложений со всей экосистемой, упакованной в один пакет.
кливер
Jib — это фреймворк, который создает и компилирует образы Docker с демоном Docker, доступным в системе, и без него. Для этого доступны два плагина для Maven и Gradle. В этом упражнении мы собираемся использовать плагин jib maven для публикации образа Docker.
нексус
Nexus — это инструмент управления репозиторием, используемый для размещения различных типов артефактов, таких как jar, пакеты npm и образы Docker / OCI.
Предпосылки
Есть некоторые предпосылки для этого урока, чтобы быть законченным.
1. Загрузите Nexus из нижеуказанного места; вам нужно выбрать версию операционной системы
https://www.sonatype.com/download-oss-sonatype
2. Извлеките его в местоположение, назовите его install_location, например, D: \ nexus
3. Запустите Nexus, выполнив команду от имени администратора
install_location\nexus-3.20.1-01\bin\nexus /run
3.1 Если на третьем шаге произойдет сбой из-за конфликта портов, то при запуске nexus будет создан файл nexus.properties по адресу
install_location\sonatype-work\nexus3\etc\nexus.properties
Вам нужно изменить порт на любой порт, не конфликтующий с портом 9081, обратите внимание, что этот файл будет создан только после успешного запуска nexus
4. Войдите в Nexus как администратор.
Ваш пароль находится в файле admin.password, который создается после запуска Nexus
4.1 Вам нужно найти пароль по умолчанию для администратора, вы можете найти его в расположении ниже
После входа в систему нажмите на вкладку «Перейти к хранилищам» в левом меню и нажмите кнопку «Создать хранилище», показанную ниже:
На втором экране выберите Docker в качестве типа рецепта, дважды щелкнув по нему.
Теперь введите имя реестра, http-порт и все остальное по умолчанию и нажмите кнопку «Создать репозиторий» в нижней части экрана. Этот http-порт используется в pom.xml для публикации
меры
Теперь перейдите на https://start.spring.io/ и загрузите базовое приложение Spring Boot с Maven в качестве инструмента для сборки.
Вам также необходимо настроить Maven в вашем пути к классам или использовать команду mvnw.
Теперь откройте весенний инициализатор проекта в выбранном вами редакторе. Я использовал Visual Studio Code, но вы можете использовать любой.
Нам нужно добавить следующие вещи в pom.xml проекта. Плагин Jib и правильные записи для реестра Docker, которые мы создали в разделе предварительных требований. Конфигурационная часть очень важна, так как этот шаг сделает или нарушит это упражнение.
Найдите раздел плагинов в pom.xml и добавьте следующую запись в pom.xml. Обратите внимание, что вам нужно изменить пароль на тот, который вы создали при настройке Nexus.
Джава
1
<plugin>
2
<groupId>com.google.cloud.tools</groupId>
4
<artifactId>jib-maven-plugin</artifactId>
6
<version>1.8.0</version>
8
<configuration>
10
<from>
12
<image>openjdk:alpine</image>
14
</from>
16
<to>
18
<image>localhost:10001/repository/firstdockerrepo/demoapp3/tags/new</image>
20
<auth>
22
<username>admin</username>
24
<password>enteryourpassword</password>
26
</auth>
28
</to>
30
32
<allowInsecureRegistries>
34
true
36
</allowInsecureRegistries>
38
<sendCredentialsOverHttp>
40
true
42
</sendCredentialsOverHttp>
44
</configuration>
46
</plugin>
Сохраните файл и выполните приведенную ниже команду из командной строки в каталоге, в который вы распаковали приложение Spring Boot.
mvn compile jib:build -DsendCredentialsOverHttp=true -Djib.httpTimeout=0
Приведенная выше команда создаст ваш первый образ Docker без установки на компьютер демона Docker и отправит его в репозиторий Nexus. Флаг httpTimeout стоит упомянуть как значение по умолчанию для этого через 2 секунды, обычно репо занимают больше времени, чем это, поэтому я держал его в бесконечности. Флаг SendCredentialsOverHttp используется для разрешения http и аутентификации, поскольку Jib использует https и credshelper. Идея состоит в том, чтобы начать вещи и видеть, что вещи заканчиваются.