Imagen de tiempo de ejecución de Quarkus Base
To ease the containerization of native executables, Quarkus provides a base image providing the requirements to run these executables.
The quarkus-micro-image:2.0 image is:
-
pequeño (basado en
ubi8-micro) -
diseñado para contenedores
-
contiene el conjunto correcto de dependencias (glibc, libstdc++, zlib)
-
soportar los ejecutables comprimidos por upx (más detalles en la documentación sobre la habilitación de la compresión)
Uso de la imagen base
En su Dockerfile, sólo tiene que utilizar:
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"]
Ampliación de la imagen
Your application may have additional requirements.
For example, if you have an application that requires libfreetype.so, you need to copy the native libraries to the container.
In this case, you need to use a multi-stage dockerfile to copy the required libraries:
# 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"]
Si necesita tener acceso al soporte completo de AWT, necesita algo más que libfreetype.so, sino también la fuente y las configuraciones de fuente:
# 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 - Uso de ubi-minimal
If the micro image does not suit your requirements, you can use ubi8/ubi-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 utilizar esta imagen de base, utilice la siguiente dirección 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"]