-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
Zenn のコメントに書いた状況の詳細です。
Codespace を作成すると DevContainer 内では以下の 2 ディレクトリーがマウントされています。
root@223091a45c89:/# ls -dlF workspace workspaces/zenn-content-boilerplate
drwxrwxrwx+ 12 root root 4096 Oct 13 14:26 workspace/
drwxrwxrwx+ 12 root root 4096 Oct 13 14:26 workspaces/zenn-content-boilerplate/
そして、Codespace は /workspaces/zenn-content-boilerplate の方を VSCode で扱ってしまいます。
root@223091a45c89:/# echo $CODESPACE_VSCODE_FOLDER/
/workspaces/zenn-content-boilerplate
これは、現状では Codespace が devcontainer.json の workplaceFolder を無視してしまうことが原因と考えられます。
この状態であっても、/workspaces/zenn-content-boilerplate と /workspace は同じソースをマウントしているので内容はほぼ共有されています。しかし、/workspace/node_modules は Docker Compose 内でボリュームをマウントしているので共有されません。
volumes:
- .:/workspace:delegated
- node_modules:/workspace/node_modulesよって、VSCode 側で見えているワークスペースは node_modules が空の状態になってしまい、NPM スクリプトなどがエラーとなってしまいます。
root@3c7d8989afb7:/workspaces/zenn-content-boilerplate# yarn run preview
yarn run v1.22.19
$ zenn preview
/bin/sh: 1: zenn: not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
root@3c7d8989afb7:/workspaces/zenn-content-boilerplate#
検索してみると、対応として ln -s でシンボリックリンクを貼ってしまうというのはみかけたのですが、/workspaces/zenn-content-boilerplate/node_modules が存在しているので(Resource Busy で削除できない状態です)、うまくいきませんでした。
いま手元に VSCode で DevContainer(ローカルの Docker)を動かす環境がないので、申し訳ないのですが確認できたのはとりあえずここまです、
よろしくお願いいたします。
Metadata
Metadata
Assignees
Labels
No labels