Jib は、Dockerfile の使用や、Docker のインストールを必要とせずにコンテナをビルドします。Jib は、Maven や Gradle の Jib プラグインで使用できます。あるいは、Jib Java ライブラリを使用できます。
Jib の機能
アプリケーションをコンテナ イメージにパッケージ化するすべてのステップを処理します。Dockerfile の作成に関するベスト プラクティスを知っている必要や、Docker がインストールされている必要はありません。
Docker ビルドフロー:
Jib ビルドフロー:
Jib はアプリケーションを依存関係、リソース、クラスの個別レイヤに整理します。Jib はまた、Docker イメージレイヤ キャッシュを使用して変更を再ビルドするだけでビルドを高速化できます。Jib のレイヤ構造と小さいベースイメージにより、全体的な画像サイズが小さくなり、パフォーマンスとポータビリティが向上します。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Container Registry API.
- Java がない場合は、Java をダウンロード、インストール、構成します。
- Maven 3.5 以降をインストールします。
- Google Cloud CLI をインストールして初期化します。
- Google Cloud CLI を Docker 認証ヘルパーとして使用して、Container Registry に対して認証します。
他の認証方法については、必要に応じて Jib 構成ドキュメントをご覧ください。gcloud auth configure-docker
Jib を使用してビルドする
既存のプロジェクトを選択し、ソースフォルダーに移動するか、次のコマンドでサンプルを複製します。
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/run/helloworld
pom.xml
にプラグインを追加します。<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>2.8.0</version> <configuration> <to> <image>gcr.io/PROJECT/IMAGE</image> </to> </configuration> </plugin>
置換
- PROJECT は、Google Cloud プロジェクト ID に置き換えます。
- IMAGE はイメージ名に置き換えます。
pom.xml
を変更したくない場合は、次のコマンドを使用します。mvn compile com.google.cloud.tools:jib-maven-plugin:2.8.0:build \ -Dimage=gcr.io/PROJECT/IMAGE
イメージをビルドし、コンテナ レジストリにプッシュする
mvn compile jib:build
成功したかどうかは、Container Registry でコンテナを見ることにより確認できます。
Docker がインストールされている場合は、必要に応じて、ローカルの Docker インストレーションとしてビルドし、他のローカル コンテナのようにイメージを検査または実行できます。
mvn compile jib:dockerBuild
その他のカスタマイズ
環境変数の追加やベースイメージの選択など、Dockerfile の場合と同じように Jib ビルドをカスタマイズできます。
環境変数を追加する
Dockerfile の ENV
命令と同じように、次のようにしてビルドに環境変数を追加できます。
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.8.0</version>
<configuration>
<to>
<image>gcr.io/PROJECT/IMAGE</image>
</to>
<container>
<environment>
<ENV_VAR>VALUE</ENV_VAR>
</environment>
</container>
</configuration>
</plugin>
置換
- PROJECT は、Google Cloud プロジェクト ID に置き換えます。
- IMAGE はイメージ名に置き換えます。
- ENV_VAR:
NAME
。 - VALUE は、目的の値に置き換えます。
これで、アプリケーションは Hello <var>VALUE</var>!
に応答します。
ベースイメージを変更する
ベースイメージは、Dockerfile の FROM
命令と同等です。ベースイメージを更新するには、フィールド from.image
を変更します。
デバッグにシェルを含める場合は、ベースイメージを alpine:3
または openjdk:VERSION
(Java が必要な場合)に設定します。
システム パッケージを追加するには、それらのパッケージがインストールされたベースイメージを作成する必要があります。詳細については、コンテナのビルドをご覧ください。
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.8.0</version>
<configuration>
<from>
<image>gcr.io/PROJECT/BASE_IMAGE</image>
</from>
<to>
<image>gcr.io/PROJECT/IMAGE_NAME</image>
</to>
</configuration>
</plugin>
from.image
フィールドを、openjdk:8-alpine
などの別の Java ベースイメージに更新してみてください。
その他の Java アスペクトのカスタマイズ
Jib は、アプリケーションの実行に必要な Java ランタイム構成をサポートしています。その他のカスタマイズについては、拡張使用法をご覧ください。
コードを配布する
gcloud のデフォルトを設定する
Cloud Run サービスを gcloud のデフォルトに構成するには:
デフォルト プロジェクトを設定します。
gcloud config set project PROJECT_ID
PROJECT_ID は、このチュートリアルで作成したプロジェクトの名前に置き換えます。
選択したリージョン向けに gcloud を構成します。
gcloud config set run/region REGION
REGION は、任意のサポートされている Cloud Run のリージョンに置き換えます。
Cloud Run のロケーション
Cloud Run はリージョナルです。つまり、Cloud Run サービスを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google によって管理されます。
レイテンシ、可用性、耐久性の要件を満たしていることが、Cloud Run サービスを実行するリージョンを選択する際の主な判断材料になります。一般的には、ユーザーに最も近いリージョンを選択できますが、Cloud Run サービスで使用されている他の Google Cloud サービスのロケーションも考慮する必要があります。使用する Google Cloud サービスが複数のロケーションにまたがっていると、サービスの料金だけでなくレイテンシにも影響します。
Cloud Run は、次のリージョンで利用できます。
ティア 1 料金を適用
asia-east1
(台湾)asia-northeast1
(東京)asia-northeast2
(大阪)europe-north1
(フィンランド) 低 CO2europe-southwest1
(マドリッド) 低 CO2europe-west1
(ベルギー) 低 CO2europe-west4
(オランダ)europe-west8
(ミラノ)europe-west9
(パリ) 低 CO2us-central1
(アイオワ) 低 CO2us-east1
(サウスカロライナ)us-east4
(北バージニア)us-east5
(コロンバス)us-west1
(オレゴン) 低 CO2
ティア 2 料金を適用
asia-east2
(香港)asia-northeast3
(ソウル、韓国)asia-southeast1
(シンガポール)asia-southeast2
(ジャカルタ)asia-south1
(ムンバイ、インド)asia-south2
(デリー、インド)australia-southeast1
(シドニー)australia-southeast2
(メルボルン)europe-central2
(ワルシャワ、ポーランド)europe-west2
(ロンドン、イギリス)europe-west3
(フランクフルト、ドイツ)europe-west6
(スイス、チューリッヒ) 低 CO2northamerica-northeast1
(モントリオール) 低 CO2northamerica-northeast2
(トロント) 低 CO2southamerica-east1
(サンパウロ、ブラジル) 低 CO2southamerica-west1
(サンティアゴ、チリ)us-west2
(ロサンゼルス)us-west3
(ソルトレイクシティ)us-west4
(ラスベガス)
Cloud Run サービスをすでに作成している場合は、Cloud Console の Cloud Run ダッシュボードにリージョンが表示されます。
Cloud Run へのデプロイ
gcloud CLI を使用して、Container Registry から Cloud Run または Cloud Run for Anthos にコンテナをデプロイします。
次のコマンドを使用してコンテナ イメージをデプロイします。
gcloud run deploy SERVICE-NAME \ --image gcr.io/PROJECT/IMAGE \ --platform managed
置換
- SERVICE-NAME は、選択したサービス名に置き換えます。
- PROJECT は、Google Cloud プロジェクト ID に置き換えます。
- IMAGE はイメージ名に置き換えます。
コンテナ イメージは、gcloud の設定で構成したサービスとリージョン(Cloud Run)またはクラスタ(Cloud Run for Anthos)にデプロイされることに注意してください。
Cloud Run にデプロイする場合は、未認証の呼び出しを許可するように求められます。サービスにすぐにアクセスしたい場合は、「未認証を許可する」メッセージに「はい」(y
)と答えます。サービスが非公開で、リクエストに認証を含める必要がある場合は、「未認証を許可する」メッセージに「いいえ」(n
)と答えます。
サービスが公開されている場合は、デプロイが成功した後に表示される URL を使用して、デプロイされたコンテナにアクセスします。サービスが非公開の場合、次の curl
コマンドを使用してサービスを呼び出します。
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
Cloud Run for Anthos にデプロイされている場合は、デプロイしたサービスにアクセスするをご覧ください。
クリーンアップ
このチュートリアル用に新規プロジェクトを作成した場合は、そのプロジェクトを削除します。既存のプロジェクトを使用し、このチュートリアルで変更を加えずに残す場合は、チュートリアル用に作成したリソースを削除します。
プロジェクトを削除する
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
チュートリアル リソースを削除する
このチュートリアルでデプロイした Cloud Run サービスを削除します。
gcloud run services delete SERVICE-NAME
SERVICE-NAME は、選択したサービス名です。
Cloud Run サービスは Google Cloud Console から削除することもできます。
チュートリアルの設定時に追加した gcloud のデフォルト リージョン構成を削除します。
gcloud config unset run/region
プロジェクト構成を削除します。
gcloud config unset project
次のステップ
- コンテナを Cloud Run にデプロイする際に適用される契約の詳細については、コンテナ契約をご覧ください。
- Cloud Build トリガーを使用して Cloud Run サービスのビルドとデプロイを自動化するには、継続的デプロイの設定をご覧ください。
- Jib の使用とカスタマイズの詳細については、Jib の GitHub リポジトリをご覧ください。