第2章 カスタムコンテナーイメージの作成
以下のいずれかの方法を使用して、Quarkus アプリケーションからコンテナーイメージを作成できます。
- 手動でのコンテナーの作成
- OpenShift Docker ビルドを使用したコンテナーの作成
Quarkus アプリケーションをネイティブ実行可能ファイルにコンパイルすると、分析および最適化の際にメモリーを大量に消費します。quarkus.native.native-image-xmx
設定プロパティーを設定することで、ネイティブコンパイル時に使用されるメモリーの量を制限することができます。メモリー制限を低く設定すると、ビルド時間が長くなる可能性があります。
2.1. 手動でのコンテナーの作成
このセクションでは、Linux X86_64 向けにアプリケーションを使用してコンテナーイメージを手動で作成する方法を説明します。Quarkus Native コンテナーを使用してネイティブイメージを作成する場合は、Linux X86_64 オペレーティングシステムをターゲットとする実行可能ファイルを作成します。お使いのホストオペレーティングシステムが別のものである場合は、バイナリーを直接実行することはできず、コンテナーを手動で作成する必要があります。
Quarkus Getting Started プロジェクトには、以下の内容と共に src/main/docker
ディレクトリーに Dockerfile.native
が含まれます。
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3 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"]
Dockerfiles
は、ベースイメージとして UBI を使用します。このベースイメージは、コンテナーで機能するように設計されています。Dockerfiles
は、ベースイメージの minimal バージョン を使用して、作成されたイメージのサイズを縮小します。
手順
以下のいずれかの方法を使用して、ネイティブ Linux 実行可能ファイルをビルドします。
Docker を使用してネイティブ実行可能ファイルをビルドします。
./mvnw package -Pnative -Dquarkus.native.container-build=true
Podman を使用してネイティブ実行可能ファイルをビルドします。
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
以下のいずれかの方法を使用して、コンテナーイメージをビルドします。
Docker を使用してコンテナーイメージをビルドします。
docker build -f src/main/docker/Dockerfile.native -t quarkus-quickstart/getting-started .
Podman を使用してコンテナーイメージをビルドします。
podman build -f src/main/docker/Dockerfile.native -t quarkus-quickstart/getting-started .
コンテナーを実行します。
Docker を使用してコンテナーを実行します。
docker run -i --rm -p 8080:8080 quarkus-quickstart/getting-started
Podman を使用してコンテナーを実行します。
podman run -i --rm -p 8080:8080 quarkus-quickstart/getting-started