別々のコンテナを設定する

開発コンテナーは、単一のフォルダー、リポジトリ、またはプロジェクトに紐付けられていることが多いですが、セットアップを簡素化したり、ツールを分離したりする方法として、複数のフォルダーで使用することもできます。特定のツールセットのために、ソースコードが単一のフォルダー内の複数のリポジトリにまたがって存在していると想像してください。

例えば

📁 Repos
   📁 node
   📁 python
      📁 starter-snake-python
      📁 vscode-remote-try-python
      📁 your-python-project-here
   📁 go
   📁 dotnet

./Repos/python フォルダー内にあるすべての Python プロジェクトで使用するコンテナーを設定してみましょう。

  1. Visual Studio Code を起動し、コマンド パレット (F1) またはクイック アクションのステータス バー項目から Dev Containers: Open Folder in Container... を選択して、./Repos/python フォルダーを選択します。

    Quick actions Status bar item

    ヒント: フォルダーを開く前にコンテナーの内容や設定を編集したい場合は、代わりに Dev Containers: Add Dev Container Configuration Files... を実行できます。

  2. 次に、dev コンテナーの開始点を選択します。フィルター可能なリストからベースの dev コンテナー定義 を選択するか、選択したフォルダーに既存の Dockerfile または Docker Compose ファイル がある場合はそれを使用できます。

    注意: Alpine Linuxコンテナを使用する場合、ネイティブコード内のglibc依存関係が原因で、一部の拡張機能が動作しない場合があります。

    Select a python dev container definition

    リストは、開いたフォルダーの内容に基づいて自動的に並べ替えられます。表示される dev コンテナーのテンプレートは、Dev Container 仕様 の一部であるファーストパーティおよびコミュニティ インデックスから提供されています。仕様の一部として、一連のテンプレートを devcontainers/templates リポジトリでホストしています。各テンプレートの内容を確認するには、そのリポジトリの src フォルダーを参照してください。

  3. コンテナーの開始点を選択すると、VS Code は dev コンテナーの構成ファイルを ./Repos/python/.devcontainer フォルダーに追加します。

  4. VS Code ウィンドウが再読み込みされ、dev コンテナーのビルドが開始されます。進捗状況の通知によって状態が更新されます。dev コンテナーをビルドする必要があるのは最初に開いたときだけであり、最初に正常にビルドした後にフォルダーを開くときは、はるかに高速になります。

    Dev Container Progress Notification

  5. ビルドが完了すると、VS Code は自動的にコンテナーに接続します。接続したら、[ファイル] > [開く...] / [フォルダーを開く...] を使用して、./Repos/python 配下のフォルダーの 1 つを選択します。

    Open python folder in the container

  6. まもなく、VS Code は同じコンテナー内でフォルダーを開きます。今後は、アクティビティ バーの リモート エクスプローラー を使用して、このサブフォルダーをコンテナー内で直接開くことができます。

    Container explorer with multiple folders under python container

ヒント: ローカル ファイルシステムをマウントする代わりに、同様の手順を使用して、ソースコードをクローンするための、よりパフォーマンスの高い隔離されたボリュームを持つコンテナーを設定することもできます。詳細については、「Advanced Containers」の ディスク パフォーマンスの向上 記事を参照してください。

© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.