😶‍🌫️

docker composeを打つと出てくる警告`version` is obsoleteとは

2024/05/22に公開

はじめに

Dockerを使用してRailsの環境構築を行なっているときに、docker composeコマンドを打つ度に警告が出てくるので気になり、調べてみました。

問題

docker-compose.ymlを作成してイメージをビルドしたところ、以下のように警告が表示されました。

$ docker compose build
WARN[0000] /Users/user/app/docker-compose.yml: `version` is obsolete

docker-compose.ymlのバージョンが古いと言われていたのでDockerのドキュメントで調べてみました。

警告の原因

Composeのバージョンが最新になったことにより、versionプロパティが廃止されたため、表示されていました。

docker-compose.yml
version: '3'

また、ドキュメントをみると

作業ディレクトリ内での、Compose ファイルのデフォルトのパスは compose.yaml (推奨)か compose.yml です。
Compose 実装は、下位互換性のために docker-compose.yaml と docker-compose.yml もサポート すべきです。
両方のファイルが存在する場合、 Compose 実装は標準である compose.yaml を優先 しなければいけません。

と書かれているので、これも修正していきます。

対応

まず、docker-compose.yml内のversion: '3'の記述を削除しました。
削除をしたので、docker compose buildを行った結果、

docker compose build
[+] Building 2.5s (11/11) FINISHED                   docker:desktop-linux
=> [app internal] load build definition from Dockerfile.dev          0.0s

警告をなくすことができました。

次に、docker-compose.ymlcompose.yaml変更も行い、無事動作しました。

参考

https://docs.docker.jp/compose/compose-file/index.html#compose-specification
Compose Specification
https://zenn.dev/miroha/articles/whats-docker-compose-v2#fn-70ed-2

Discussion