The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Imagem de Tempo de Execução de Base do Quarkus

Para facilitar a conteinerização de executáveis nativos, o Quarkus fornece uma imagem de base com os requisitos para rodar esses executáveis. A imagem quarkus-micro-image:2.0 é:

  • pequena (baseada em ubi8-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/quarkus-micro-image:2.0
WORKDIR /work/
COPY target/*-runner /work/application
RUN chmod 775 /work
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/ubi8/ubi-minimal:8.9 as BUILD
RUN microdnf install freetype

# Second stage - copy the dependencies
FROM quay.io/quarkus/quarkus-micro-image:2.0
COPY --from=BUILD \
   /lib64/libfreetype.so.6 \
   /lib64/libbz2.so.1 \
   /lib64/libpng16.so.16 \
   /lib64/

WORKDIR /work/
COPY target/*-runner /work/application
RUN chmod 775 /work
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/ubi8/ubi-minimal:8.9 as BUILD
RUN microdnf install freetype fontconfig

# Second stage - copy the dependencies
FROM quay.io/quarkus/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 target/*-runner /work/application
RUN chmod 775 /work
EXPOSE 8080
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]

Alternativa - Usando o ubi-minimal

Se a imagem micro não atender às suas necessidades, você pode usar o ubi8/ubi-minimal. É uma imagem maior, mas contém mais utilitários e está mais próxima de uma distribuição completa do Linux. Normalmente, ela contém um gerenciador de pacotes ( microdnf ), para que você possa instalar pacotes com mais facilidade.

Para usar esta imagem de base, use o seguinte Dockerfile:

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

EXPOSE 8080
USER 1001

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

Conteúdo Relacionado