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

· 1 минута на чтение

Провозился два дня, но в итоге смог собрать один из микро-сервисов в нативном режиме. Ничего сложного, было много нюансов в настройке 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 в момент работы.

Struchkov Mark
Struchkov Mark
Задавайте вопросы, если что-то осталось не понятным👇