SpringBootでコンテナイメージの作成をする

エキサイト株式会社メディア事業部エンジニアの佐々木です。メディア事業部ではSpringBootで開発しています。SpringBootには標準でDockerFileなしでコンテナイメージを生成してくれる機能があるので、ご紹介します。

はじめに

環境は下記になります。

SpringBoot version: 2.6.3
Java version: 17
Gradle Version: 7.3.3

コンテナイメージ作成

コンテナイメージ作成はすごく簡単で、下記コマンドのみで作ることができます。

$ ./gradlew bootBuildImage \
    --imageName=example.com/excite-sample-app/front:v1


$ docker images | grep sample
REPOSITORY                            TAG        IMAGE ID       CREATED        SIZE
example.com/excite-sample-app/front   v1         7f2bccdd727d   42 years ago   280MB

とても簡単です。ちょっとイメージサイズを減らしたいのでビルドする元のイメージの変更をします。

$ ./gradlew bootBuildImage \
    --builder=paketobuildpacks/builder:tiny
    --imageName=example.com/excite-sample-app/front:v1

REPOSITORY                            TAG        IMAGE ID       CREATED        SIZE
example.com/excite-transfer/web       v1         e19f7b55bf63   42 years ago   207MB

--builderでコンテナイメージを生成するためのコンテナイメージを指定できます。shellすら動かないdistroless likeなイメージができあがるようです。

補足

デフォルトは、paketobuildpacks/builder:baseになります。これだと、少々コンテナのイメージサイズが大きくなります。

まとめ

DockerFileを作成せずにコマンド1行でコンテナイメージを作成できました。build.gradleに設定情報を書いておけば、オプション等は不要でGradleのタスクのみでコンテナイメージを作成できます。どこかでまとめたいと思います。

最後

エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しております。長期インターンも歓迎していますので、興味があれば連絡いただければと思います。

カジュアル面談はこちらになります! meety.net

募集職種一覧はこちらになります!(カジュアルからもOK) www.wantedly.com