🐙

Docker Desktop を更新したら Makefile が動かなくなった話

2024/09/27に公開

エラーは突然起こった

いつも通り make コマンドを入力して Docker Compose を動かそうとしました。

当該の Makefile から一部抜粋
docker-compose run --build open-api-generator generate

すると何やら docker-compose がないらしい。

出力されたエラー
docker-compose: No such file or directory

つい数分前には動いていた Docker Compose ですが、もはや動いていた頃が懐かしい。

ただ幸運なことに今回は心当たりがありました。
それはついさっき促されるまま行った Docker Desktop の更新です。

何が起こった?

Docker Desktop の更新とともに Compose が V2 になりました。

Docker のブログを確認したところ、Compose V1 は 2023 年 6 月以降からサポートされていなかったらしい。

https://www.docker.com/ja-jp/blog/new-docker-compose-v2-and-v1-deprecation/

過去に記事を読み docker compose を使う方が良さそうだと知り、コマンドを打つ時は既に切り替えていたが、昔書いた Makefile までを書き直すことはしていなかったので急に動かなくなり焦った。

ドキュメントを読む限り「今後サポートしないけど docker-compose も一応使えるよ〜」と受け取れるが、バージョン確認をしても command not found: docker-compose と出るので Docker Desktop 環境ではデフォルトで消えるらしい。

これを読んでいる皆様もお気をつけ下さい。

まとめ

docker compose コマンドを使おう

docker-compose コマンドを使うことを止めよう。
docker compose コマンドを使うべきです。もはや一択と言っても過言ではないでしょう。

互換性の心配も基本的には問題ないように思えます。

Docker CLI 内のcomposeコマンドは、docker-composeコマンドとそのフラグをほぼサポートします。 このコマンドはdocker-composeと完全な互換性を持つものとしています。

https://matsuand.github.io/docs.docker.jp.onthefly/compose/cli-command-compatibility/

過去に書いた Makefile や bash なども docker-compose から docker compose に切り替えておけば悲劇は起きませんでした。

補足資料

Compose V1 から V2 への移行について書かれたドキュメント

私の環境ではコマンドを変えるだけで大丈夫でしたが、それでもエラーが出る方は移行マニュアルが参考になると思います。

https://docs.docker.com/compose/releases/migrate/

Discussion