動かざることバグの如し

近づきたいよ 君の理想に

Docker Composeのversion指定が不要になったのはなぜか?

環境

  • Docker Compose V2

背景

Docker Compose、使ってるか?便利だよな。
ところで、最近docker compose upした時に、こんな警告が出ないか?

version is obsolete

versionはもう古い」って言われてるわけだ。
じゃあ、なんで不要になったのか、そろそろちゃんと理解しとくか。

Compose Specificationへの統一

Docker Composeは、2019年頃からCompose Specificationってやつを基準にするようになったんだ。
この仕様だと、トップレベルのversionは、昔のバージョンとの互換性のために残されてたんだけど、実際には「参考情報」程度のものでしかなかった。

Compose Specificationでは、Composeファイルのスキーマは常に最新版が使われるから、versionを指定する必要がなくなったってわけ。

Docker Compose V2の登場

2020年にリリースされたDocker Compose V2(docker composeコマンド)では、さらに設計が見直された。
V2では、versionプロパティは完全に無視されて、常に最新のスキーマが使われる。だから、もう書かなくていいんだ。

非推奨化と警告

そして2023年以降、Dockerの更新で、versionが書かれたComposeファイルを使うと、さっきの「version is obsolete」って警告が出るようになった。
これは、みんなに不要な設定を消して、新しい仕様に慣れてもらうためだな。

歴史的な経緯を整理すると...

  • 昔はComposeファイル形式に1.x、2.x、3.xとかバージョンがあって、混乱しがちだった。
  • そこで、Compose Specificationに統一されて、バージョン指定が不要になった。

結論

もうversionは書かなくてOK。スッキリしたComposeファイルを心がけよう。

参考リンク