docker-compose コマンドが見つからない(command not found)
Compose V1 が廃止され V2 で docker compose(ハイフン無し)に統合されたためです。
docker compose version で動作を確認し、古いスクリプトはサブコマンド形式へ移行します。
#docker-compose#compose#command-not-found#cli#migration
要約
docker-compose: command not found の主因は、ハイフン付きの Compose V1 が 2023 年に End of Life となり、現在の Docker では docker compose(スペース区切りのサブコマンド)に統合されたことです。
まず docker compose version を実行し、こちらが動くなら呼び出し側を新形式へ書き換えれば解決します。
よくある原因
- V2 のみインストールされている: Docker Desktop や新しい
docker-ceには Compose V2 がプラグインとして同梱されるが、docker-compose単体バイナリは入らない。 - compose プラグイン未導入: Linux に Engine だけ入れた場合、
docker-compose-pluginを別途インストールしないと両形式とも使えない。 - PATH の問題: プラグインは
/usr/libexec/docker/cli-plugins等に置かれ、ここが壊れているとサブコマンドも認識されない。 - 古いスクリプト: 既存の Makefile・CI が
docker-compose upをハードコードしている。
解決策
1. V2 形式に置き換える
最も確実なのはコマンド呼び出しを新形式へ変えることです。
# 旧
docker-compose up -d
# 新(推奨)
docker compose up -ddocker compose version が Docker Compose version v2.x を返せば V2 は有効です。
詳細は公式の移行ガイドを参照してください。
2. Linux で compose プラグインを入れる
Engine のみの環境では plugin パッケージを追加します。
sudo apt-get update
sudo apt-get install docker-compose-plugin
docker compose version3. 互換エイリアスを張る
スクリプトを今すぐ変更できない場合は一時的にエイリアスで橋渡しします。
echo 'alias docker-compose="docker compose"' >> ~/.bashrc
source ~/.bashrcただし CI では shell の alias が効かないため、最終的にはコマンド本体を docker compose へ書き換えるのが正攻法です。