背景
開発環境をDockerコンテナで立ち上げ、VSCodeの拡張機能 (Dev Containers) でDockerコンテナに接続していた。
ソースコードはホストからDockerコンテナにマウントしていた。
この環境だとソースコードの読み込みやDockerコンテナにインストールした拡張機能の読み込みが極端に遅くなってしまう問題があった。
この問題を解消できたため記事に残す。
前提
- ホストOS: Windows
- Docker Desktop: WSL版
- VSCodeのDev Containers拡張機能を使って開発環境を立ち上げている
原因
WindowsとLinuxのファイルシステム差異によるものだった。
ソースコードは背景に書いたとおりである。ホスト(Windowsのファイルシステム)からDockerコンテナ(Linuxのファイルシステム)にマウントしていた。
Dockerコンテナにインストールした拡張機能についても同様である(多分)。Dockerコンテナにインストールした拡張機能は、ホストのマウント元に保存されてるみたい(Dev Containersのdocs見たけど情報を見つけられなかった)。
解消法
ファイルシステムを統一してしまえば解決する。
MicrosoftとDockerがdocsで推奨している。
- https://code.visualstudio.com/docs/devcontainers/containers#_open-a-wsl-2-folder-in-a-container-on-windows
- https://docs.docker.com/desktop/wsl/best-practices/
構成図
手順
- VSCodeにRemote Development拡張機能を導入する
- WSLにUbuntuディストリビューションをインストールする
- Docker DesktopがUbuntuで動くように設定する
- Ubuntuのコマンドラインを開く
- 必要に応じてGitやSSHの設定をする
- VSCodeで開きたいディレクトリ (
.devcontainer
があるディレクトリ)に移動する -
code .
を実行する(VSCodeのWSL拡張機能でカレントディレクトリが開かれる) - 開かれたVSCodeのコマンドパレットで
Rebuild and Reopen in Container
を選択する