SpringBoot 2.3.0.M1 で buildpack による Docker image 生成ができるようになってたので試してみた
表題の通り、簡単に試してみた。
以下、手順。
$ curl https://start.spring.io/starter.zip -o demo.zip \ --data dependencies=web \ --data bootVersion=2.3.0.M1 \ --data type=gradle-project $ unzip demo.zip -d demo $ cd demo $ ./gradlew tasks $ ./gradlew bootBuildImage
tasks
の出力結果が次の通りで、 bootBuildImage
というタスクが追加されている
bootBuildImage
タスクで Docker image が生成できる。 jib
と同じで、初回は非常に時間がかかるものの、 2 回目以降は高速に実行できる。
したがって、 CI などでビルドする場合は、タイムアウトの設定に気をつける必要があるかもしれない。
BootBuildImage
タスクのコードを見る限り、設定できるのは、
imageName
- Docker image の名前environment(String name, String value)
---build-arg
に相当するパラメーター(ただし何が設定できるのかわからない)from(File jar)
- 起動する jar ファイル。File
の代わりにBootJar
タスクも指定できるbuilder
- 他に取り込みたいイメージ。
builder
に指定できる値はなにかわからなかったので、適当に python:3-slim
を指定してみたところ、エラーになった。
ビルドした結果、次のようなイメージが追加される
作ったイメージ(demo
) の他に、 cloudfoundry/cnb
、 cloudfoundry/run
なるイメージが追加されている。
demo
イメージの docker history
と cloudfoundry/run
の docker history
の結果を比較して、 cloudfoundry/run
がベースのイメージとして使われているっぽい
なお、 demo
を起動後に、コンテナに潜って OS を調べてみたら、 Ubuntu だった
起動しているコマンドは java -jar
だった。
なお、潜っているときに launchar
なるエグゼキュータブルを見つけて、それでも起動できることがわかったが、何に使うのかはわからなかった
おわり