Мощные инструменты (19 части серии)
Введение
Что такое джиб? JIB — это библиотека, созданная Google, чтобы помочь вам сгенерировать изображения Docker ваших Java Projects без Docker локально.
Что это значит?
Глобальная презентация
Классическим образом, мы должны иметь Dockerfile в нашем Java Project. Создайте изображение Docker с помощью командных строк и поставьте его в реестр. Таким образом заставляет нас иметь Docker на местном уровне, чтобы иметь возможность создавать изображение и иметь некоторые знания о Docker и о том, как построить Dockerfile.
Новый путь, предложенный Google, намного более упрощен. Теперь у нас есть элемент входа (проект) и 1 шаг (сборка) в процессе. Нам больше не нужен Docker на местном уровне. И разработчики должны настраивать только некоторые элементы для создания изображения, которое мы хотим.
Техническая презентация
Чтобы иметь возможность использовать JIB, у вас есть 3 способа сделать это:
- с плагином Maven ( jib-maven-plugin )
- с плагином Gradle ( jib-gradle-plugin )
- с основной библиотекой ( jib-core )
Мы поговорим немного больше о первом.
Плагин Maven — база
В простейшей форме реализация плагина Maven выглядит так.
... ... ... ... com.google.cloud.tools jib-maven-plugin 2.5.2
Это просто, просто объявление в разделе сборки. Но с этим вы можете только генерировать локальный .tar Файл со следующей командой.
mvn compile jib:buildTar
Если вы попытаетесь создать Dockerimage и подтолкнуть его в реестр с этой конфигурацией, вы быстро увидите, что вам нужно больше параметров.
> mvn compile jib:build ... [ERROR] Failes to execute goal com.google.cloud.tools:jib-maven-plugin:2.5.2:build (default-cli) on project jib-demo: Missing target image parameter.
С документацией у вас есть два варианта, чтобы предоставить необходимые данные:
- В параметре команды: -Дамаж
- В конфигурации POM
Вот минимальная конфигурация для генерации изображения Docker и натолкнуть его в библиотеку с командой MVN Compile Jib: Build Анкет
com.google.cloud.tools jib-maven-plugin 2.5.2 docker.io/my-docker-id/my-app
Если вы хотите подтолкнуть изображение Docker в личный репозиторий, это также возможно со следующими параметрами. В этом месте вы также можете добавить другие конфигурации, такие как теги …
docker.io/my-docker-id/my-app dockerRegistry_username dockerRegistry_password
Плагин Maven — параметры
Поскольку можно определить много вещей для будущих изображений Docker, вы можете определить некоторые элементы для вашей основы изображения.
По умолчанию JIB будет использовать Distoless Изображение, которое содержит только минимум для Linux и время выполнения OpenJDK. Но по нескольким причинам вам могут понадобиться другие инструменты, такие как терминал или завиток. Это цель от параметр. Вы можете определить изображение для использования с его версией и учетными данными, если изображение находится в частном реестре.
openjdk:alpine
docker.io/my-docker-id/my-app dockerRegistry_username dockerRegistry_password
Также у вас есть так много вариантов настройки вашего изображения, например:
- Extradirectories которые вводят файлы в изображение и определяют их права на изображении
src/main/custom-extra-dir /home/user/jib-extras /extras /path/on/container/to/fileA 755 /path/to/another/file 644 /glob/pattern/**/*.sh 755
- jvmflags Чтобы добавить флаги JVM
-Duser.timezone=America/Montreal -XX:MetaspaceSize=96m -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Xss228k -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp
- порты Чтобы определить, какие порты должны быть выставлены
8080 9999
- среда определить переменные среды
pwd usr
…
Если вам нужна дополнительная информация, пожалуйста, проверьте плагин Maven Readme: https://github.com/googlecontainertools/jib/tree/master/jib-maven-plugin
Если вы не Java Dev, вы можете проверить проект rules_docker который может делать то же самое для других языков, как:
- Питон
- Nodejs
- Ява
- Скала
- Groovy
- C
- Идти
- Ржавчина
- D (Я не использую это или даже не пытаюсь, я хочу упомянуть их, потому что Google упоминает их, и это может быть действительно полезно.)
Источники
Джиб
- https://cloud.google.com/java/getting-started/jib
- https://github.com/GoogleContainerTools/jib
- https://cloud.google.com/blog/products/gcp/introducing-jib-build-java-docker-images-better
- https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#frequently-asked-questions-faq
Правила Docker
Мощные инструменты (19 части серии)
Оригинал: «https://dev.to/adaendra/jib-a-powerful-docker-image-builder-3437»