Introduction

Visual Studio Codeでコンテナ内に拡張機能をインストールできない場合の対応。

こんな感じのエラーが、コンテナ内ででます。
proxyや証明書はインストールしたコンテナのはずなのですが。

根本原因を追究したかったのですが、時間がなかったので暫定対応を行いました。

How to?

Remote - Containers拡張でデバッグ用のコンテナを起動する際、code-serverが読み込まれるのですが、その際に拡張機能の入手に失敗してるようです。
そのため、

  • コンテナ起動時に拡張機能をインストール
  • コンテナビルド時に拡張機能をインストール

という手法がとれます。
今回は後者を。

Remote - Containers拡張で作成されるデバッグコンテナのDockerfileに

1
2
3
4
5
6
7
8
9
10
RUN apt-get update && apt-get install -y --no-install-recommends \
bsdtar \
wget \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
WORKDIR /root/.vscode-server/extensions
ENV EXT_VERSION=2020.1.57204
RUN wget https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-python/vsextensions/python/${EXT_VERSION}/vspackage
RUN bsdtar -xvf vspackage
RUN mv extension ms-python.python-${EXT_VERSION}
RUN rm vspackage

のような記述を追加します。
これにより、拡張機能があらかじめ追加された状態になります。

また拡張機能をあらかじめ入れておくことで、コンテナをビルドし直した際に、再度拡張機能をインストールし直す必要もなくなります。
本来はコンテナ起動後、手動で拡張機能をインストールしコンテナのリロードで有効化するのですが、それをスキップできます。

こんな感じ。