🎃

docker-compose.yaml is invalidと言われたときの対処法

2022/09/15に公開

エラー内容

M1 Macに対応するため、platformという定義がdocker-compose.yamlに追加されたのをきっかけに、特定の環境でdocker-composeがうまくいかなくなってしまった。

$ docker comopse up -d db
The Compose file './docker-compose.yaml' is invalid because:
Unsupported config option for services.db: 'platform'

発生環境

  • OS: AmazonLinux

考えられる原因

  1. docker-compose.yamlのインデントが間違っている
  2. docker-composeコマンドがバージョンが古い

対処方法

1. インデント間違ってない?

まずは、インデントの誤りがないかよーく確認する。
でも今回はどうやら間違ってないようだ。

2. docker-composeバージョンが古い?

発生環境(AmazonLinux)のdocker-composeのバージョンを確認。

$ docker-compose -v
docker-compose version 1.22.0, build f46880fe

問題の発生しない環境(Mac)だとdocker-composeのバージョンが新しい。なんだか怪しい。

$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c

バージョンを更新しようと思ったら、1.22.0より古いバージョンしかみつからない・・・。困った。

$ yum update
$ yum info docker-compose
Available Packages
Name        : docker-compose
Arch        : noarch
Version     : 1.18.0

docker-composeは将来的にdocker composeに置き換えを目指しているので、せっかくだからdocker composeを利用可能にする。(この記事のおかげでたどり着けたので感謝!)

# インストール先を確認
$ rpm -q --list docker | grep cli-plugins
/usr/libexec/docker/cli-plugins
/usr/libexec/docker/cli-plugins/buildx

# /usr/libexec/docker/cli-pluginsにdocker-compose v2.5.0をインストール
$ sudo curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/libexec/docker/cli-plugins/docker-compose

# 実行権限付与
$ sudo chmod +x /usr/libexec/docker/cli-plugins/docker-compose

# バージョン確認
$ docker compose version
Docker Compose version v2.5.0

解決

無事にdocker composeでコンテナ立ち上げに成功!
platformに対応してないよって怒られることもなかった。めでたし。

参考

https://zenn.dev/mtkn1/scraps/d618ba267315f7
https://github.com/docker/compose#linux

Discussion