Quarkusベースランタイムイメージ
ネイティブ実行可能ファイルのコンテナ化を容易にするために、Quarkusはこれらの実行可能ファイルを実行するための要件を提供するベースイメージを提供しています。 quarkus-micro-image:1.0
のイメージは次の通りです:
-
軽量(
ubi8-micro
に基づきます) -
コンテナ用に設計
-
正しい依存関係のセット(glibc, libstdc++, zlib)を含んでいる
-
upx圧縮された実行可能ファイルのサポート(詳細は 圧縮の有効化についてのドキュメントを参照してください)
ベースイメージの利用
Dockerfile
の中で以下を記述します:
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"]
イメージの拡張
アプリケーションには追加の要件があるかもしれません。たとえば、 libfreetype.so
を必要とするアプリケーションがある場合、ネイティブライブラリをコンテナにコピーする必要があります。この場合、必要なライブラリをコピーするために、多段式の dockerfile
を使用する必要があります:
# First stage - install the dependencies in an intermediate container
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.10 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"]
AWTのフルサポートを利用する必要がある場合、 libfreetype.so
だけでなく、フォント及びフォント設定も必要です:
# First stage - install the dependencies in an intermediate container
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.10 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"]
代替 - ubi-minimalを使用する
もし、マイクロイメージが要件に合わない場合は、 ubi8/ubi-minimal を利用できます。ubi8/ubi-minimalは、比べるとサイズの大きなイメージですが、より多くのユーティリティを含んでおり、完全なLinuxディストリビューションに近いものです。特に、パッケージマネージャー( microdnf
)が含まれているので、より簡単にパッケージをインストールすることができます。
このベースイメージを使用するには、以下の Dockerfile
を使用します:
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.10
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"]