Провозился два дня, но в итоге смог собрать один из микро-сервисов в нативном режиме. Ничего сложного, но было много нюансов в настройке CICD.
Самое полезное, это вот эта документация Quarkus. А конкретно флаги:
-Dquarkus.native.container-build=true
-Dquarkus.native.remote-container-build=true
Эти флаги необходимо добавить в команду сборки
Во время сборки будет скачан докер образ с GraalVM и сборка будет проходить уже в этом образе. То есть можно использовать любой раннер CI без предварительной настройки базового образа.
А вот так выглядит Dockerfile сервиса:
Сервис стал собираться в 2,5 раза больше, около 5 минут, вместо 2. Но теперь он стартует моментально, наверное за доли секунды. При этом на под выделяется всего 256 mb ОЗУ на старте и 512 mb в момент работы.
Более сложный путь
Также слепил образ для GitLab-раннера, который совмещает GraalVM и Docker, осталось добавить в него Gradle, но пока использую ./gradlew
. Оставлю это тут на всякий случай.
Мета информация
Область:: 00 Quarkus
Родитель:: Нативные сборки в Java
Источник::
Автор::
Создана:: 2024-04-07