GoogleはJibを発表した。オープンソースのコンテナイメージビルダで、Java開発者はMavenやGradleといった普及しているJavaツールを使ってJavaコンテナをビルドできる。開発者がDockerfileを書く必要はなく、イメージをビルドするためにDockerをインストールする必要もない。
JibはJavaで実装されMavenやGradleビルドの一部として動作する。JibのビルドアプローチはJavaアプリケーションを多数のレイヤに分解する。そのためコードに何か変更があったとき、アプリケーション全体ではなくこうした変更点だけが再ビルドされる。デフォルトではこれらのレイヤは開発アプリケーションとその実行時の依存性だけを含めたイメージであるdistrolessベースイメージの上に重ねられる。以下の図はDockerでのビルドとJibでのビルドのフローを比較したものだ。
Dockerのビルドフロー:
Jibでのビルドフロー:
Jibを使い始めるには、開発者は単に提供されているMavenやGradle用のプラグインをビルドファイルに追加しターゲットイメージを設定するだけだ。以下のいくつかの例はコンテナレジストリとDockerデーモンへのビルドを示している。
Maven
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>0.9.0</version>
<configuration>
<to>
<image>myimage</image>
</to>
</configuration>
</plugin>
# コンテナイメージレジストリへのビルド
$ mvn compile jib:build
# Dockerデーモンへのビルド
$ mvn compile jib:dockerBuild
Gradle
plugins {
id 'com.google.cloud.tools.jib' version '0.9.8'
}
jib.to.image = 'myimage'
# コンテナイメージレジストリへのビルド
$ gradle jib
# Dockerデーモンへのビルド
$ gradle jibDockerBuild
プライベートリポジトリの認証が必要なユーザ向けに、JibはDocker credential helpersを提供している。ユーザはMaven settingsで認証情報の定義もできる。認証情報ヘルパとしてGoogle Container RegistryやAWS Elastic Container Registry、Docker Hub Registryがある。以下は認証情報ヘルパを使う例だ。
<configuration>
...
<from>
<image>aws_account_id.dkr.ecr.region.amazonaws.com/my-base-image</image>
<credHelper>ecr-login</credHelper>
</from>
<to>
<image>gcr.io/my-gcp-project/my-app</image>
<credHelper>gcr</credHelper>
</to>
...
</configuration>
より詳細な情報はGitHubのリポジトリにある。
Rate this Article
- Editor Review
- Chief Editor Action