Post

the attribute is obsolete の Warning

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

1
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の仕様が統一されたことで不要になったようです。

変更前後の比較

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 変更前
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 だったのでどんだけ使ってなかったんだ、、、っていう。

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

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

チーム開発での注意点

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

This post is licensed under CC BY 4.0 by the author.