Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
はい、記事タイトルの通りなのですが、昨日MacBookProでVSCodeとDockerを連携させて新しくPythonフレームワークのDjango用コンテナを作っていたところ、何をしても意味不明なエラーが出てきて4時間近く無駄にしてしまいました。
今回VS Code上のターミナルで出現したエラーは次の通りです。
[5455 ms] Exit code 1
[5458 ms] Command failed: /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) –ms-enable-electron-run-as-node /Users/xxxx/.vscode/extensions/ms-vscode-remote.remote-containers-0.315.1/dist/spec-node/devContainersSpecCLI.js up –user-data-folder /Users/xxxx/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data –container-session-data-folder /tmp/devcontainers-d28c093a-e5ae-453a-864f-bac492ebd0c71696677936683 –workspace-folder /Users/xxxx/MyProjects/Test_Django_on_XserverVPS –workspace-mount-consistency cached –id-label devcontainer.local_folder=/Users/xxxx/MyProjects/Test_Django_on_XserverVPS –id-label devcontainer.config_file=/Users/xxxx/MyProjects/Test_Django_on_XserverVPS/.devcontainer/docker/devcontainer.json –log-level debug –log-format json –config /Users/xxxx/MyProjects/Test_Django_on_XserverVPS/.devcontainer/docker/devcontainer.json –default-user-env-probe loginInteractiveShell –mount type=volume,source=vscode,target=/vscode,external=true –skip-post-create –update-remote-user-uid-default on –mount-workspace-git-root
[5459 ms] Exit code 1
まともに読む気も失せるメッセージなので無視して、いろいろ設定をいじっていました。一体何が悪いのかさっぱりわかっていませんでした。
上述のようにこのエラーはハマりこみ、Dockerfileを最小構成で書き直してみたり、docker-comose.ymlやdevcontainer.jsonの各種パスの記載をいじってみたりなど、何度も何度も同じようなことを繰り返しそれでもエラーは治らず。8時間近く無駄にしました。
他のコンテナを作ったときに成功しているプロジェクトで使っているdocker-compose.ymlやdevcontainer.jsonと比較・検討したりもしましたが、さっぱり原因がわかりませんでした。
しかし、4時間近く悪戦苦闘していると、上手くいっているコンテナづくりの場合と今回の場合とで決定的に異なる点にふと気づきました。
それは、docker-compose.ymlのservices項目、そしてdevcontainer.jsonのservice項目に設定ているサービス名でした。
今回作ろうとしてエラーが出たのは、docker-compose.ymlのservices項目について、
version: '3'
services:
django_app:
build: .
そしてdevcontainer.jsonのservice項目について、
{
//VSCodeに表示される開発コンテナ名
"name":"Django_container",
"dockerComposeFile":"docker-compose.yml",
"service":"django_app",
このように、サービス名にアンダースコア(またはアンダーバー)をつけた名前を設定していました。
しかし、これまでコンテナ作成に成功していたプロジェクトについてはそれらの項目はすべて、webとかdjangoとか単純なものでアンダースコアは使っていませんでした。
というわけで解決方法ですが、
におけるコンテナのサービス名に、アンダースコアをつかわない名前をつける(ハイフンは大丈夫です)、ということです。
ではなぜこのようにアンダースコアを使うとエラーになってしまうのか?それは次の2つのサイトの記事を参考にしてください。
Dockerの使い方を動画で解説してくれているUdemyの人気講座としては次のようなものがあります。
世界最大の動画学習サイトUdemyのおすすめDocker講座【PR】