🎃
docker-compose.yaml is invalidと言われたときの対処法
エラー内容
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
考えられる原因
- docker-compose.yamlのインデントが間違っている
- 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に対応してないよって怒られることもなかった。めでたし。
参考
Discussion