動かざることバグの如し

近づきたいよ 君の理想に

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は記述する必要はない。シンプルなComposeファイルを心がけよう。

参考リンク