はじめに
VScodeの拡張機能Dev Container
本当に便利
だが、新しく環境を作ろうとすると、な・ぜ・かコンテナ作成に失敗し続ける事象が発生していた。
調査をした結果、ホストマシンのフォルダ名が原因だと発覚したため共有する
事象
Dev Container
に必要なファイルを揃え、いざ「リモートで再度開く」を実行すると、docker composeが失敗する
[1938 ms] Start: Run: docker compose --project-name _study_devcontainer -f c:\Users\name\Documents\VScode_dir\適当な名前_study\.devcontainer\docker-compose.yml -f c:\Users\name\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose\docker-compose.devcontainer.build-1729002727405.yml build
invalid project name "_study_devcontainer": must consist only of lowercase alpha
numeric characters, hyphens, and underscores as well as start with a letter or n
umber
[2349 ms] Error: Command failed: docker compose --project-name _study_devcontainer -f c:\Users\name\Documents\VScode_dir\適当な名前_study\.devcontainer\docker-compose.yml -f c:\Users\name\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose\docker-compose.devcontainer.build-1729002727405.yml build
エラーの原因について
dockerのプロジェクト名の先頭文字は英数字でなければならないが、今回実行されたコマンドのプロジェクト名はアンダーバー_
から開始している。プロジェクト名のルールに反しているためエラーが出力されている
プロジェクト名を変更したいが…
Dev Container
が参照しているファイルは.devcontainer/devcontainer.jsonのため、このファイルにプロジェクト名を入力すればいいはず…!
と思い調べてみたが、そのような設定はなさそう
真因調査
今回のように失敗し続けるパターンと一回で成功するパターンがある。失敗パターンのフォルダに成功パターンのファイルを全てコピーして実施してもコンテナ作成は失敗した
すなわち、別の何かを参照してプロジェクト名を決めていると考え、もう一度失敗したコマンドの--project-name
を確認した
[2349 ms] Error: Command failed: docker compose --project-name _study_devcontainer
プロジェクト名の_study
はどこから来ているのか。。。
どこ、から。。。
c:\Users\name\Documents\VScode_dir\適当な名前_study\.devcontainer\docker-compose.yml
親ディレクトリの名前か!!!!
今回の真因
親ディレクトリの名前が「日本語のみ」または「日本語_英語」の場合にプロジェクト名がアンダーバーから始まってしまうようです
名前をhoge_study
にしたらコンテナ作成できました
c:\Users\name\Documents\VScode_dir\hoge_study
[1989 ms] Start: Run: docker compose --project-name hoge_study_devcontainer -f c:\Users\name\Documents\VScode_dir\hoge_study\.devcontainer\docker-compose.yml -f c:\Users\name\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose\docker-compose.devcontainer.build-1729003206538.yml build
[+] Building 0.2s (6/6) FINISHED docker:desktop-linux