VS Codeで拡張機能をインストールできない場合の対策(Remote - Conteiners)

f:id:hate_nattou:20210221223928j:plain:w480

概略

Visual Studio Code(VS Code)から、ローカルに構築したDockerコンテナへ接続して、プログラムを書いています。

Dockerコンテナを再構築した際、そのDockerコンテナにVS Code拡張機能がうまくインストールされない場合があります。

この記事では、その場合の対策を書いています。

環境

状態

VS CodeのLOCAL環境には拡張機能をインストールできるが、コンテナ環境にはインストールできない。

  • /workspace/.devcontainer/.devcontainer.jsonに記載してもNG
  • 起動したVS Code拡張機能からインストールしてもNG(言語パックだけは入ったが肝心のPython, Pylance, Jupyterなどが軒並みNG)

対策

  1. ブラウザでmarket placeを開く。 marketplace.visualstudio.com

  2. インストールしたい拡張機能の個別ページを探す f:id:hate_nattou:20210626203233p:plain:w480

  3. 右下の「Download Extension」をクリックして、ファイルをダウンロード(例: [extension-name].vsix とする)

  4. ダウンロードしたファイルを、コンテナ内の/root/.vscode-server/extensions/vsix/にコピーする

  5. コンテナ内に入って、# bsdtar -xvf [extension-name].vsix としてファイルを解凍
    ※ コマンドが無い場合は、事前にapt-get install bsdtar でインストールしておく

  6. 解凍したファイルのうち、'extension' ディレクトリを[extension-name]に変更して、一つ上の階層(/root/.vscode-server/extensions/)へ移動する

  7. 不要なファイルを削除する(インストールする拡張機能が一つしかないのなら、vsixディレクトリごと削除しても可)

  8. VS Codeを再起動

まとめ

とりあえずの対策は、以上で可能。

今回が初めてではないので、原因を判明させて根本から解決したい。

.devcontainer.jsonの記載を修正するだけで、解決できることが望ましい。

別な対策として、Dockerfileに記述し自動化している方もいらっしゃった。複数の拡張機能が必須になったら、私もDockerfileに書き足そう。

taktak.jp