プロジェクトとエディターの設定をカスタマイズする

完了

機関のプロジェクトの 1 つに開発コンテナーをセットアップしました。 これで、Docker と Dev Containers 拡張機能を持つすべてのユーザーに対して "そのまま機能する" ようになりました。 依然として依存関係をインストールする必要があります。 また、認識していない Visual Studio Code 拡張機能が必要になる場合もあります。

さいわい、devcontainer.json ファイルを使用すると、すべてのプロジェクト設定を完全にカスタマイズし、自動化することができます。

devcontainer.json の詳細

Products Dashboard プロジェクトの .devcontainer/devcontainer.json ファイルにある主なオプションを見てみましょう。 すべてを一度に見るには少し長いため、セクションごとに見てみましょう。

[ビルド構成]

image プロパティを使って、コンテナー イメージと呼ばれるものに基づいて、コンテナーをどのように作成するかを定義します。

"image": "mcr.microsoft.com/devcontainers/python:0-3.11"
},

このイメージは devcontainers/images リポジトリでホストされており、そこからチェックアウトすることもできます。

また、Dockerfile や Docker Compose ファイルというファイルを使って、設定を構成することもできます。 これらのファイルは .devcontainer フォルダーに保存されており、追加ソフトウェアのインストールなど、特定の設定要件をさらに構成することができます。 詳細については、開発コンテナーのドキュメントを参照してください。

特徴

開発コンテナーの "機能" は自己完結型であり、インストール コードと開発コンテナーの構成の共有可能なユニットです。 この名前は、いずれかを参照することで、自分自身やコラボレーターが使うツール、ランタイム、またはライブラリの "機能" をすばやく簡単に開発コンテナーに追加できるという考えに由来しています。

VS Code のコマンド [Dev Containers: Add Dev Container Configuration Files] (Dev Containers: 開発コンテナーの構成ファイルの追加) を使うと、Git や Azure CLI のインストールなど、既存の開発コンテナーの構成をカスタマイズするスクリプトの一覧が表示されます。

プロジェクト設定

このファイルの後半のセクションでは、プロジェクト構成を直接扱います。

customizations を使って、VS Code や GitHub Codespaces など、開発コンテナーをサポートする製品固有のプロパティを設定することができます。

たとえば、vscode.settings を設定すると、マシン固有の設定をコンテナーにコピーできます。 これらの設定は、Visual Studio Code セットアップで指定されている場合があります。 これらを settings に追加することで、このプロジェクトを開くすべてのユーザーに、VS Code のこれらの特定の設定が適用されるようになります。

この Python コンテナーでは、そのベース イメージ mcr.microsoft.com/devcontainers/python:0-3.11これらの設定を確認できます。 これにより、ユーザーの Python 編集エクスペリエンスが向上します。

  • extensions 配列を使用して、コンテナーに接続するときに Visual Studio Code にインストールする Visual Studio Code の拡張機能を指定できます。 Dev Containers を使用しているときに、通常の Visual Studio Code セットアップと、既にあるすべての拡張機能が存在するとは限りません。 拡張機能はその ID でここに指定されます。

postCreateCommand

postCreateCommand プロパティを使うと、コンテナーの作成後に任意のコマンドを実行できます。 最初の演習で学習したように、pip3 コマンドを実行して、依存関係をインストールする必要があります。 しかし、どうしたらそれがわかるでしょうか? わからない可能性もあります。 自動的に実行されるようにここで構成して、他のユーザーが心配する必要がないようにします。

次の演習では、devcontainer.json ファイルを変更してプロジェクトのいくつかの部分を自動化し、他の開発者がすぐに操作を正常に実行できるように設定します。