Devcontainerで拡張機能がインストールされない

2024年4月4日

Installing extension…で処理が永遠完了しない。

調査してみると、M1 Macで発生する問題のようだ。

GitHubのIssue #179827では、M1 MacのDevcontainer上でVS Codeの拡張機能のインストールに20分以上かかる問題が報告されています。この問題は、コンテナの起動とVS Codeサーバーのインストールは通常通りに行われますが、拡張機能のインストールが異常に遅くなっているとのことです。

解決策

GitHubのIssue #179827に関して、M1 MacのDevcontainer上でVS Codeの拡張機能インストールが遅い問題に対する一つの解決策として、拡張機能の署名検証を無効にする方法が提案されています。具体的には、.devcontainer/devcontainer.json ファイル内の customizations.vscode.settings セクションに "extensions.verifySignature": false を追加することで、拡張機能のインストール時間が通常の速度に戻ることが報告されています。

この設定変更により、拡張機能の署名検証がスキップされるため、インストール遅延が解消されるとのことです。ただし、この方法はセキュリティリスクを増加させる可能性があるため、悪意のある拡張機能がインストールされるリスクも若干高まります。

この設定は、.vscode/settings.jsonやユーザー設定ではなく、devcontainer.json内でのみ有効であり、これは設定が読み込まれるタイミングに関連していると考えられます。また、一度Devcontainerをビルドすれば、コンテナを再開する際にはextensions.verifySignature設定を無効にしても問題ないことが、git管理において有用であるとの報告もあります。

対策が施されるまでの間、この設定変更が有効な回避策となる可能性があります。
以下のような設定をします。

  "customizations": {
    "vscode": {
      "settings": {
        "extensions.verifySignature": false
      },
      "extensions": [
        "ms-azuretools.vscode-azurefunctions",
        "ms-azuretools.vscode-docker",
        "ms-python.python",
        "python.debugpy",
        "github.copilot"
      ]
    }

確かに、extensions.verifySignatureをfalseにするとすぐにインストールされました。