環境
- 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ファイルを心がけよう。