このエラーは、Docker Compose がプロジェクト名をうまく認識できないときに起こるようです。
解決できた方法を備忘録として残します。
現象
docker compose up -d を実行した際に、以下のようなエラーメッセージが表示され、コンテナを起動できない。
project name must not be empty
原因
このエラーは、docker-compose.yml が置かれているディレクトリの名前に、日本語のようなマルチバイト文字が含まれている場合に発生することがあります。
Docker Compose は、デフォルトでディレクトリ名を元にプロジェクト名を自動生成します。しかし、ディレクトリ名にマルチバイト文字が含まれていると、プロジェクト名を正しく認識できず、結果として「プロジェクト名が空である」というエラーを引き起こします。
解決策
docker-compose.yml ファイルに、プロジェクト名を明示的に指定することで解決できます。
ファイルのトップレベル( services: と同じ階層)に name プロパティを追加し、任意のプロジェクト名を(英数字で)設定します。
修正例
修正前
services:
web:
container_name: php_task_manager
build: .
ports:
- "8239:80"
volumes:
- .:/var/www/html/
restart: always
修正後
name: task-manager # この行を追加
services:
web:
container_name: php_task_manager
build: .
ports:
- "8239:80"
volumes:
- .:/var/www/html/
restart: always
このように name を指定することで、Docker Compose はディレクトリ名に依存せず、指定されたプロジェクト名でコンテナを管理するようになります。