You've successfully subscribed to Заметки Разработчиков
Great! Next, complete checkout for full access to Заметки Разработчиков
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
Success! Your billing info is updated.
Billing info update failed.

build

Нативная сборка Quarkus сервиса

Рассказываю о своем опыте сборки Quarkus сервиса в нативном режиме.

Провозился два дня, но в итоге смог собрать один из микро-сервисов в нативном режиме. Ничего сложного, было много нюансов в настройке CICD.

Самое полезное, это вот эта документация Quarkus. А конкретно флаги:

-Dquarkus.native.container-build=true
-Dquarkus.native.remote-container-build=true
В моем случае вот этот

Также слепил образ для GitLab-раннера, который совмещает GraalVM и Docker, осталось добавить в него Gradle, но пока использую ./gradlew.

FROM ghcr.io/graalvm/graalvm-ce:ol9-java17-22.3.0
WORKDIR /opt/graalvm
RUN microdnf -y install dnf-plugins-core
RUN microdnf -y install yum
RUN yum install -y yum-utils
RUN yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
RUN yum install -y docker-ce docker-ce-cli containerd.io
RUN gu install native-image

Сервис стал собираться в 2,5 раза больше, около 5 минут, вместо 2. Но теперь он стартует моментально, наверное за доли секунды. При этом на под выделяется всего 256 mb ОЗУ на старте и 512 mb в момент работы.

Сборка образа для SpringBoot

Недавно узнал, что spring-boot-maven-plugin умеет собирать докер образы, и хотел сделать об этом небольшую заметку, но в итоге получилась полноценная статья 😅 В этой статье также рассмотрена библиотека Jib, которая является аналогом spring-boot-maven-plugin. Примечательная особенность в том, что Jib может работать без докера. Но основной интерес представляет из себя оптимизация Dockerfile,

Недавно узнал, что spring-boot-maven-plugin умеет собирать докер образы, и хотел сделать об этом небольшую заметку, но в итоге получилась полноценная статья 😅

В этой статье также рассмотрена библиотека Jib, которая является аналогом spring-boot-maven-plugin. Примечательная особенность в том, что Jib может работать без докера.

Но основной интерес представляет из себя оптимизация Dockerfile, которая позволяет сжать ваш контейнер в 4-5 раз. Это возможно благодаря модулям, которые появились еще в Java 9 и утилиты jlink.

Собираем Docker Image для Spring Boot
Рассмотрим популярные способы упаковки приложения в контейнер. Напишем свой оптимальный Dockerfile для Spring Boot.