docker compose が最近のバージョンで 'version' is obsolete という警告がでるようになったので、 警告にしたがって単純に削除する前に、いつから意味がないものになっていたのかを調べました。

警告でみつかる情報

警告メッセージで検索すると [BUG] `'version' is obsolete` · Issue #11628 · docker/compose がでてきて、 メッセージ通り今は不要だということがわかります。 しかし、いつから不要だったのかはこの issue からわからなかったので、 さらに調べてみました。

docker compose file format のバージョン

https://docs.docker.com/compose/compose-file/compose-versioning/#compatibility-matrix によると compose file format のバージョンは 3.8 まで上がっていましたが、 Docker Engine 19.03.0 から Compose specification にも対応していることがわかります。

Compose specification での version 指定は、 https://docs.docker.com/compose/compose-file/04-version-and-name/ によると 後方互換性のための informative だけのものだったようです。

つまり、2019 年の 19.03.0 から version 指定は不要 (optional) だったということで、 今となってはそれより古いバージョンはほぼ使っていなさそうなので、 無条件に消してよさそうだと思いました。

もっと古いバージョンについては https://docs.docker.com/compose/intro/history/

  • Compose file format 1 with Compose 1.0.0 in 2014
  • Compose file format 2.x with Compose 1.6.0 in 2016
  • Compose file format 3.x with Compose 1.10.0 in 2017

とあって、その後 Swarm mode などとの関係で混乱していた 2.x と 3.x は Compose Specification にマージされたという歴史のようです。

まとめ

docker compose ファイルの version 指定は 2019 年から使われている Compose specification で Version top-level element (optional) となっていて、すでに不要な状態が何年も続いているので、単純に消してしまって良さそうです。

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published