← すべての記事

the attribute is obsolete の Warning

久しぶりに docker compose を使ったら以下の Warning が出ました

久しぶりに docker compose を使ったら以下の Warning が出ました

WARN[0000] docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion

version が廃止されているらしく、無視されてしまったのですが必須フィールドだった記憶。今はそんなこともなく不要になっているらしい。 元々2とか3とかでファイルの記述や使える機能が違うので、それを明示的に宣言する必要がありましたがcomposeの仕様が統一されたことで不要になったようです。

変更前後の比較#

# 変更前
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: example
# 変更後(versionを削除)
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: example

シンプルに version の行を削除するだけで OK です。

ちなみに、この Warning は調べると v2.25.0 から出だしたとのこと。

https://github.com/docker/compose/issues/11628

自分の compose のバージョンを確認したら v2.38.2 だったのでどんだけ使ってなかったんだ、、、っていう。

% docker compose version
Docker Compose version v2.38.2-desktop.1

でも version はおまじない的に書いている面が強かったですし、V2 になったことで消えるならそれはとても嬉しいので消しました。

チーム開発での注意点#

基本的には compose をアップデートしなよ、のスタンスではあるのですが一部の会社ではcomposeが古い人と新しい人が混在しそうなので、メンバにアップデートしてもらうか Warning を飲むか、になると思います。