Imagem de Tempo de Execução de Base do Quarkus
To ease the containerization of native executables, Quarkus provides a base image providing the requirements to run these executables.
The ubi9-quarkus-micro-image:2.0
image is:
-
small (based on
ubi9-micro
) -
concebida para contêineres
-
contém o conjunto correto de dependências (glibc, libstdc++, zlib)
-
suporta executáveis comprimidos por upx (mais detalhes na documentação de ativação da compressão)
Usando a imagem de base
No seu Dockerfile
, basta usar:
FROM quay.io/quarkus/ubi9-quarkus-micro-image:2.0
WORKDIR /work/
COPY --chmod=0755 target/*-runner /work/application
EXPOSE 8080
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
Estendendo a imagem
Sua aplicação pode ter requisitos adicionais. Por exemplo, se tiver uma aplicação que exija libfreetype.so
, será necessário copiar as bibliotecas nativas para o contêiner. Nesse caso, você precisa usar um dockerfile
de vários estágios para copiar as bibliotecas necessárias:
# First stage - install the dependencies in an intermediate container
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5 as BUILD
RUN microdnf install freetype -y
# Second stage - copy the dependencies
FROM quay.io/quarkus/ubi9-quarkus-micro-image:2.0
COPY --from=BUILD \
/lib64/libfreetype.so.6 \
/lib64/libbz2.so.1 \
/lib64/libpng16.so.16 \
/lib64/
WORKDIR /work/
COPY --chmod=0755 target/*-runner /work/application
EXPOSE 8080
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
Se precisar de acesso a todo o suporte AWT, precisa de mais do que apenas libfreetype.so
, mas também da fonte e das configurações da fonte:
# First stage - install the dependencies in an intermediate container
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5 as BUILD
RUN microdnf install freetype fontconfig -y
# Second stage - copy the dependencies
FROM quay.io/quarkus/ubi9-quarkus-micro-image:2.0
COPY --from=BUILD \
/lib64/libfreetype.so.6 \
/lib64/libgcc_s.so.1 \
/lib64/libbz2.so.1 \
/lib64/libpng16.so.16 \
/lib64/libm.so.6 \
/lib64/libbz2.so.1 \
/lib64/libexpat.so.1 \
/lib64/libuuid.so.1 \
/lib64/
COPY --from=BUILD \
/usr/lib64/libfontconfig.so.1 \
/usr/lib64/
COPY --from=BUILD \
/usr/share/fonts /usr/share/fonts
COPY --from=BUILD \
/usr/share/fontconfig /usr/share/fontconfig
COPY --from=BUILD \
/usr/lib/fontconfig /usr/lib/fontconfig
COPY --from=BUILD \
/etc/fonts /etc/fonts
WORKDIR /work/
COPY --chmod=0755 target/*-runner /work/application
EXPOSE 8080
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
Alternativa - Usando o ubi-minimal
If the micro image does not suit your requirements, you can use ubi9-minimal.
It’s a bigger image, but contains more utilities and is closer to a full Linux distribution.
Typically, it contains a package manager (microdnf
), so you can install packages more easily.
Para usar esta imagem de base, use o seguinte Dockerfile
:
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5
WORKDIR /work/
RUN chown 1001 /work \
&& chmod "g+rwX" /work \
&& chown 1001:root /work
COPY --chown=1001:root --chmod=0755 target/*-runner /work/application
EXPOSE 8080
USER 1001
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]