概略
Visual Studio Code(VS Code)から、ローカルに構築したDockerコンテナへ接続して、プログラムを書いています。
Dockerコンテナを再構築した際、そのDockerコンテナにVS Codeの拡張機能がうまくインストールされない場合があります。
この記事では、その場合の対策を書いています。
環境
- OS: macOS Catalina 10.15.7
- VS Code: May 2021(version 1.57) == 1.57.1
- VS Code拡張機能: Remote - Containers v0.183.0
- Docker Engine: v19.03.13
状態
VS CodeのLOCAL環境には拡張機能をインストールできるが、コンテナ環境にはインストールできない。
- /workspace/.devcontainer/.devcontainer.jsonに記載してもNG
- 起動したVS Codeの拡張機能からインストールしてもNG(言語パックだけは入ったが肝心のPython, Pylance, Jupyterなどが軒並みNG)
対策
ブラウザでmarket placeを開く。 marketplace.visualstudio.com
インストールしたい拡張機能の個別ページを探す
右下の「Download Extension」をクリックして、ファイルをダウンロード(例: [extension-name].vsix とする)
ダウンロードしたファイルを、コンテナ内の/root/.vscode-server/extensions/vsix/にコピーする
コンテナ内に入って、
# bsdtar -xvf [extension-name].vsix
としてファイルを解凍
※ コマンドが無い場合は、事前にapt-get install bsdtar
でインストールしておく解凍したファイルのうち、'extension' ディレクトリを[extension-name]に変更して、一つ上の階層(/root/.vscode-server/extensions/)へ移動する
VS Codeを再起動
まとめ
とりあえずの対策は、以上で可能。
今回が初めてではないので、原因を判明させて根本から解決したい。
.devcontainer.jsonの記載を修正するだけで、解決できることが望ましい。
別な対策として、Dockerfileに記述し自動化している方もいらっしゃった。複数の拡張機能が必須になったら、私もDockerfileに書き足そう。