Gradle 内から docker ビルドとプッシュを実行するためのプラグイン、
「com.palantir.docker」が開発終了となっていたお話し。
経緯
Gradleのバージョンが古くなっていたので上げようという話があり、v7あたりから
8.13まであげようとしたところ、com.palantir.dockerに関連するエラーが発生。
いろいろと調査を進めていた結果、後述のようなことが分かりました。
「com.palantir.docker」とは
冒頭に記載していますが、「com.palantir.docker」はGradle 内から
docker ビルドとプッシュを実行するためのプラグインです。
https://plugins.gradle.org/plugin/com.palantir.docker
このプラグインを利用してイメージのビルドから環境へのプッシュを実施していました。
調べていくうちに見えた希望
調査を進めていった中で最新バージョンである『0.36.0』ではGradle8.12以降に対応して
いないとのこと。
『0.37.0』では解決するということでリリースを待とうかと考えていました。
https://github.com/palantir/gradle-docker/issues/801
そして絶望・・・
まだかまだか、とgithubを確認していたある日、READMEが目に入りました。
https://github.com/palantir/gradle-docker#docker-gradle-plugin
免責事項: このリポジトリはサポート終了になりました
プラグイン開発終了のお知らせ。。
代替案の検討
プラグインを使うことができなくなったため、代わりの方法の検討が必要となりました。
候補に挙がったのは以下の4つ。
- 1.Gradleを8.11.1にする
- 2.別のプラグイン「com.bmuschko.gradle.docker」を利用する
- 3.SpringBoot標準のbootBuildImage タスクを利用する
- 4.CIスクリプトでビルド&プッシュ
検討結果1:(却下)Gradleを8.11.1にする
未来がないので却下
検討結果2:(却下)別のプラグイン「com.bmuschko.gradle.docker」を利用する
変なエラーがでました。
Cannot cast object 'extension 'docker'' with class 'com.bmuschko.gradle.docker.DockerExtension_Decorated' to class 'com.bmuschko.gradle.docker.DockerExtension'
com.palantir.dockerで問題となっていたのと同じかどうかは分かりませんでしたが、
こちらのプラグインの開発も2年以上止まっているようなので却下
検討結果3:(却下)SpringBoot標準のbootBuildImage タスクを利用する
Dockerfileファイルをビルドに使う方法が分からず却下
そもそも使えない?
検討結果4:(採用)CIスクリプトでビルド&プッシュ
最終的にこちらに落ち着きました。
docker buildでDockerfileファイル指定して、docker pushするだけです。
もちろん、プラグインでやっていた諸々の処理はDockerfileでやるようにする
必要はあります。
以上です!
もっと良い方法があるよ、というのがありましたらコメントいただけると幸いです!