docker image作成サンプルです。 jibを使い、Google Container Registryに docker imageをmavenにて登録するまでのサンプルです。
jibを使う事により、/target/xxxxx.jar
に作成されるパッケージモジュールと、
Dockerfileをシームレスに連携させることができます。
- JDK 10以上
- Apache Maven 3.5
- Google Cloud SDK + gcloud components install docker-credential-gcr インストール環境
pom.xml にて、jibを利用し、docker imageをビルドします。
<from>
<image>openjdk:10-jre-slim</image>
</from>
ベースイメージは、一番軽量となるalpine + jre のイメージを利用しています。
<to>
<image>gcr.io/${gcp.project.name}/${project.name}:${project.version}</image>
</to>
作成されるイメージのタグは、Google Container Registryの形式に従います。
イメージ名、及びバージョンは、pom.xmlの定義に従います。
GCPプロジェクト名は、実行時の引数より受け取ります。これは後述する [#ビルド]を参照してください。
<args>
<arg>--spring.profiles.active=${SPRING_PROFILES_ACTIVE}</arg>
<arg>--server.port=${SPRING_SERVER_PORT}</arg>
<arg>--spring.config.location=/spring-boot/config/application.yaml</arg>
</args>
Springのプロファイル、サーバーポートは、環境変数から設定しています。
また、=/spring-boot/config/application.yaml
は configmapでマウントされた情報となります。
下記コマンドを実行するだけで、Google Container Registryにイメージが登録されます。
sample-project
は、GCPプロジェクト名を指定してください。
mvn -Dgcp.project.name=sample-project compile jib:build
下記コマンドを実行し、kubernetesに配備を行います。
deployments.xmlのimage部分のGCPプロジェクト名は適宜変更を行ってください。
そして、 gcloud container clusters get-credentials ~
コマンドにてクラスタに接続を行ってください。
spring-boot-sample>kubectl apply -f kubernetes
configmap "spring-boot-config" created
deployment "spring-boot-sample" created
service "spring-boot-sample" created
spring-boot-sample>
- ノードポートに対してアクセスをしてください。
- 必要であれば、ingressも構築し、LBを介してアクセスできるようにしてください。