Skip to content

Docker Compose の "no configuration file provided: not found" エラー解決方法

問題

Docker Desktop for Windows (WSL2 統合版) を使用している際、特定の docker compose コマンドを実行すると次のエラーが発生します:

bash
docker compose logs
no configuration file provided: not found

ただし、docker compose up コマンドは正常に動作し、コンテナのビルドと起動に成功します。

原因

このエラーは主に以下のいずれかが原因で発生します:

  1. ファイル名の問題:Docker Compose ファイルの命名規則や拡張子の問題
  2. ファイルパスの問題:ファイルの場所やパスの指定方法の問題
  3. Docker インストール方法の問題:Snap パッケージによるインストール時の問題
  4. ファイル形式の問題:実際のファイルタイプと拡張子の不一致

解決方法

1. ファイル名と拡張子の確認

Docker Compose はデフォルトで以下のファイル名を認識します:

  • docker-compose.yml
  • docker-compose.yaml

WARNING

以下のようなファイル名では認識されません:

  • docker.compose.yml (ドット区切り)
  • dockercompose.yml (ハイフンなし)
  • docker-compose3.yml (数字を含む)

適切なファイル名に変更してください:

bash
# 例:不正なファイル名を修正
mv docker.compose.yml docker-compose.yml
mv dockercompose.yml docker-compose.yml

2. カスタムファイル名を使用する場合

デフォルト以外のファイル名を使用する場合は、-f オプションで明示的に指定する必要があります:

bash
# カスタムファイル名を使用する場合
docker compose -f docker-compose.dev.yml logs
docker compose -f custom-compose.yaml up
bash
docker compose -f <ファイル> <コマン>
bash
docker compose -f docker-compose.prod.yml up -d
docker compose -f docker-compose.dev.yaml logs --follow

3. 作業ディレクトリの確認

Docker Compose コマンドは、Compose ファイルが存在するディレクトリで実行する必要があります:

bash
# 正しいディレクトリに移動して実行
cd /path/to/your/project
docker compose logs

WARNING

システムディレクトリ(例:C:\WINDOWS\system32\)や特定のシステムパスでは動作しない場合があります。ユーザーディレクトリ(例:/home/user/C:\Users\username\)にプロジェクトを配置してください。

4. ファイル拡張子の確認(Windows)

Windows では、拡張子が正しく設定されていない場合があります:

  1. エクスプローラーを開く
  2. 「表示」タブ → 「ファイル名拡張子」にチェックを入れる
  3. ファイルの実際の拡張子を確認(例:.yml.txt ではなく .yml
  4. 必要に応じて拡張子を修正

5. Snap インストールの問題(Linux)

Ubuntu などで Snap パッケージ経由で Docker をインストールした場合、この問題が発生することがあります:

bash
# Snap 版 Docker を削除
sudo snap remove docker

# 公式リポジトリからインストール
sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# Docker の GPG キーを追加
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# リポジトリを追加
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker をインストール
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

6. メタデータファイルの作成(特殊なケース)

一部の環境では、metadata.json ファイルの作成が必要な場合があります:

  1. Compose ファイルと同じディレクトリに metadata.json を作成
  2. 以下の内容を記述:
json
{
    "ComposeFilePath": "./compose.yml"
}

トラブルシューティング

現在のコンテナ状況の確認

bash
# 実行中のコンテナを表示
docker ps

# すべてのコンテナ(停止中含む)を表示
docker ps -a

コンテナの競合解決

コンテナ名が重複している場合の解決方法:

bash
# 競合しているコンテナを削除
docker rm <コンテナ名またはID>

# 強制再作成
docker compose -f <ファイル> up --force-recreate --build -d

予防策

  1. 標準的なファイル名を使用docker-compose.yml または docker-compose.yaml
  2. プロジェクトごとに専用ディレクトリ:各プロジェクトを独立したディレクトリに配置
  3. 公式インストール方法の使用:Snap ではなく公式リポジトリからインストール
  4. 拡張子の確認:ファイル保存時に正しい形式(YAML)で保存する

まとめ

「no configuration file provided: not found」エラーは、主に Docker Compose ファイルのパスや名前の認識問題によって発生します。基本的な解決策としては、適切なディレクトリでのコマンド実行、正確なファイル名の使用、必要に応じた -f オプションの指定などがあります。Linux 環境では Docker のインストール方法にも注意が必要です。

これらの解決策を試しても問題が解決しない場合は、Docker の再インストールや環境の再設定を検討してください。