digital-garden/_inbox/Сборка Quarkus приложения в исполняемый файл.md
2024-06-13 21:01:37 +03:00

1.7 KiB
Raw Blame History

aliases tags date zero-link parents linked
зрелость/🌱
2024-04-07
Quarkus

На самом деле все просто. Необходимо добавить определенные флаги в команду сборки Gradle.

gradle build -Dquarkus.package.type=native -Dquarkus.native.remote-container-build=true
./mvnw package -Dnative -Dquarkus.native.remote-container-build=true

Во время сборки будет скачан докер образ с GraalVM и сборка будет проходить уже в этом образе. То есть можно использовать любой текущий раннер. В нашем случае раннер с тегом java17.

А вот так выглядит Dokerfile сервиса:

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.6
WORKDIR /work/
RUN chown 1001 /work \
    && chmod "g+rwX" /work \
    && chown 1001:root /work
COPY ./build/*-runner /work/application

EXPOSE 8080
USER 1001

CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]

Вот и все.

Более сложный путь

Оставлю это тут на всякий случай. Первый сборки использовали кастомный образ с GraalVM

FROM ghcr.io/graalvm/graalvm-ce:ol9-java17-22.3.0
WORKDIR /opt/graalvm
RUN gu install native-image
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