Skip to content

GitHub Codespces では workspaceFolder が無視されてしまうのでワークスペースが正しく構成されない #3

@hankei6km

Description

@hankei6km

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.jsonworkplaceFolder を無視してしまうことが原因と考えられます。

この状態であっても、/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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions