VS Codeのエージェントモードを拡張するには、を試してください!

開発コンテナーを作成する

Visual Studio Code Dev Containers 拡張機能を使用すると、Docker コンテナーをフル機能の開発環境として使用できます。コンテナー内で任意のフォルダーまたはリポジトリを開き、Visual Studio Code のすべての機能を活用できます。プロジェクト内の devcontainer.json ファイルは、VS Code に、適切に定義されたツールとランタイムスタックを備えた開発コンテナーにアクセス (または作成) する方法を指示します。このコンテナーは、アプリケーションを実行したり、コードベースの操作に必要な個別のツール、ライブラリ、またはランタイムを提供するために使用できます。

開発コンテナーを作成するパス

このドキュメントでは、VS Code で開発 (dev) コンテナーを作成する手順について説明します。

  1. VS Code がコンテナーを起動する方法と、接続後に実行する内容を記述する devcontainer.json を作成します。
  2. Dockerfile を使用して、新しいソフトウェアのインストールなど、開発コンテナーへの変更を行い、永続化します。
  3. Docker Compose を介して複数のコンテナーを構成します。
  4. 変更を加えるたびに、開発コンテナーをビルドして、変更が有効になるようにします。

上記のいずれかの手順の後、完全に機能する開発コンテナーが作成され、このチュートリアルの次の手順に進んでより多くの機能を追加することも、停止して現在使用している開発環境での作業を開始することもできます。

注: Dev Containers 拡張機能には、Dev Containers: 開発コンテナー構成ファイルの追加... コマンドがあり、定義済みのコンテナー構成のリストから選択できます。devcontainer.json と Dockerfile を段階的に構築するのではなく、すぐに完全な開発コンテナーを作成したい場合は、開発コンテナーの作成を自動化するに進んでください。

devcontainer.json ファイルを作成する

VS Code のコンテナー構成は、devcontainer.json ファイルに格納されます。このファイルは、デバッグ構成の launch.json ファイルに似ていますが、代わりに開発コンテナーを起動 (またはアタッチ) するために使用されます。開発コンテナー構成は、.devcontainer/devcontainer.json の下に配置されるか、プロジェクトのルートに .devcontainer.json ファイル (ドットプレフィックスに注意) として格納されます。

devcontainer.json の開始点としてイメージを使用できます。イメージは、さまざまなツールとオペレーティングシステムがプリインストールされたミニディスクドライブのようなものです。イメージは、イメージを格納するリポジトリのコレクションであるコンテナーレジストリからプルできます。これは、事前に構築された TypeScript および Node.js VS Code 開発コンテナーイメージを使用する簡単な devcontainer.json の例です

{
  "image": "mcr.microsoft.com/devcontainers/typescript-node:0-18"
}

次のような変更を構成できます

  • Gitなどの追加ツールをコンテナにインストールします。
  • 拡張機能を自動的にインストールします。
  • 追加のポートを転送または公開します。
  • ランタイム引数を設定します。
  • 既存の Docker Compose 設定を再利用または拡張します。
  • さらに高度なコンテナー構成を追加します。

この例では、Code Spell Checker 拡張機能をコンテナーにインストールし、ポート 3000 を自動的に転送する場合、devcontainer.json は次のようになります

{
  "image": "mcr.microsoft.com/devcontainers/typescript-node",

  "customizations": {
    "vscode": {
      "extensions": ["streetsidesoftware.code-spell-checker"]
    }
  },
  "forwardPorts": [3000]
}

注: 追加の構成は、ベースイメージの内容に基づいてコンテナーに既に追加されます。たとえば、上記では streetsidesoftware.code-spell-checker 拡張機能を追加しましたが、コンテナーには mcr.microsoft.com/devcontainers/typescript-node の一部であるため、"dbaeumer.vscode-eslint" も含まれます。これは、devcontainer.json を使用して事前構築する際に自動的に行われます。事前構築セクションで詳細を確認できます。

上記の devcontainer.json を使用すると、開発コンテナーは機能しており、接続して開発を開始できます。Dev Containers: コンテナーで再開コマンドで試してください。

Quick pick with list of Dev Containers commands

このコマンドを実行すると、VS Code が再起動したときに、ポート 3000 が転送され、ESLint 拡張機能がインストールされた Node.js および TypeScript 開発コンテナー内にいます。接続すると、ステータスバーの左側にある緑色のリモートインジケーターに、開発コンテナーに接続されていることが表示されます。

VS Code instance connected to dev container

追加の開発コンテナーシナリオ

devcontainer.json ファイルを介して、次のことができます。

  • ツールチェーンを分離したり、セットアップを高速化したりするために、スタンドアロンコンテナーを起動します。
  • イメージ、Dockerfile、またはDocker Composeで定義されたコンテナー展開アプリケーションを操作します。
  • 開発コンテナー内からDocker または Kubernetes を使用してアプリケーションをビルドおよびデプロイします。

devcontainer.json のサポートされているワークフローがニーズに合わない場合は、既に実行中のコンテナーにアタッチすることもできます

ヒント: リモート Docker ホストを使用したいですか? セットアップの詳細については、リモート Docker ホストでの開発の記事を参照してください。

追加ソフトウェアをインストールする

開発コンテナーに追加のソフトウェアをインストールしたい場合があります。VS Code がコンテナーに接続されると、VS Code ターミナルを開き、コンテナー内の OS に対して任意のコマンドを実行できます。これにより、新しいコマンドラインユーティリティをインストールしたり、Linux コンテナー内からデータベースやアプリケーションサービスを起動したりできます。

ほとんどのコンテナーイメージは Debian または Ubuntu に基づいており、apt または apt-get コマンドを使用して新しいパッケージをインストールします。Ubuntu のドキュメントでコマンドについて詳しく学ぶことができます。Alpine イメージには同様の apk コマンドが含まれていますが、CentOS / RHEL / Oracle SE / Fedora イメージはyum を使用します。または最近では dnf を使用します

インストールしたいソフトウェアのドキュメントには通常、具体的な手順が記載されていますが、コンテナー内で root として実行している場合は、コマンドの前に sudo を付ける必要がない場合があります。

# If running as root
apt-get update
apt-get install <package>

root として実行している場合、コンテナーに sudo が構成されていれば、ソフトウェアをインストールできます。すべての定義済みコンテナーには sudo がセットアップされていますが、コンテナーに非 root ユーザーを追加する記事は、独自のコンテナーにこれをセットアップするのに役立ちます。いずれにせよ、sudo をインストールして構成すれば、root を含む任意のユーザーとして実行するときにそれを使用できます。

# If sudo is installed and configured
sudo apt-get update
sudo apt-get install <package>

Git をインストールするとします。VS Code の統合ターミナルで次のコマンドを実行できます。

# If sudo is installed and configured
sudo apt-get update
# Install Git
sudo apt-get install git

また、devcontainer.json"features" プロパティを使用して、事前に定義されたFeaturesまたは独自のセットからツールや言語をインストールすることもできます。

たとえば、次のように Azure CLI の最新バージョンをインストールできます

"features": {
    "ghcr.io/devcontainers/features/azure-cli:1": {
        "version": "latest"
    }
  }

詳細については、開発コンテナー機能の仕様を参照してください。

リビルド

.devcontainer フォルダーの内容を編集する場合、変更を有効にするには再構築する必要があります。コンテナーを更新するには、Dev Containers: コンテナーを再構築コマンドを使用します。

しかし、コンテナーを再構築すると、手動でインストールしたものはすべて再インストールする必要があります。この問題を回避するには、devcontainer.jsonpostCreateCommand プロパティまたはカスタム Dockerfile を使用できます。

カスタム Dockerfile は Docker のビルドキャッシュから恩恵を受け、postCreateCommand よりも高速な再構築につながります。ただし、Dockerfile は開発コンテナーが作成され、ワークスペースフォルダーがマウントされる前に実行されるため、ワークスペースフォルダー内のファイルにアクセスできません。Dockerfile は、ワークスペースファイルとは独立してパッケージとツールをインストールするのに最も適しています。

postCreateCommand アクションはコンテナーが作成されると実行されるため、このプロパティを使用して npm install などのコマンドを実行したり、ソースツリー内のシェルスクリプトを実行したりすることもできます(マウントしている場合)。

"postCreateCommand": "bash scripts/install-dependencies.sh"

対話型 Bash シェルを使用すると、.bashrc が読み込まれ、環境に合わせてシェルが自動的にカスタマイズされます。

"postCreateCommand": "bash -i scripts/install-dependencies.sh"

NVMのようなツールは、シェルを対話モードにするために-iを使用しないと機能しません。

"postCreateCommand": "bash -i -c 'nvm install --lts'"

コマンドは終了しないとコンテナが起動しません。例えば、アプリケーションの起動をpostCreateCommandに追加すると、コマンドは終了しません。

また、コンテナーが起動するたびに実行される postStartCommand もあります。パラメーターは postCreateCommand とまったく同じように動作しますが、コマンドは作成時ではなく起動時に実行されます。

devcontainer.json でイメージを直接参照したり、postCreateCommand または postStartCommand を介してソフトウェアをインストールしたりするよりも、Dockerfile を使用する方がさらに効率的です。

Dockerfile

Dockerfileも.devcontainerフォルダに存在します。devcontainer.json内のimageプロパティをdockerfileに置き換えることができます。

{
  "build": { "dockerfile": "Dockerfile" },

  "customizations": {
    "vscode": {
      "extensions": ["dbaeumer.vscode-eslint"]
    }
  },

  "forwardPorts": [3000]
}

新しいソフトウェアのインストールなどの変更を行う場合、Dockerfile で行われた変更は、開発コンテナーを再構築しても保持されます。

Dockerfileでは、FROMを使用してイメージを指定し、RUN命令を使用してソフトウェアをインストールします。&&を使用して複数のコマンドを連結できます。

FROM mcr.microsoft.com/devcontainers/javascript-node:0-18
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
    && apt-get -y install git

注: DEBIAN_FRONTEND のエクスポートにより、コンテナーを操作する際の警告が回避されます。

開発コンテナの作成を自動化する

手動で .devcontainer を作成する代わりに、コマンドパレット (F1) から Dev Containers: 開発コンテナー構成ファイルの追加... コマンドを選択すると、プロジェクトに必要なファイルが開始点として追加され、必要に応じてさらにカスタマイズできます。

このコマンドを使用すると、フォルダーの内容に基づいて、定義済みコンテナー構成のリストから選択できます。

Add a dev container config

選択できる定義済みコンテナー構成は、Dev Container 仕様の一部であるファーストパーティおよびコミュニティインデックスから提供されます。私たちは、仕様の一部として、devcontainers/templates リポジトリで一連のテンプレートをホストしています。そのリポジトリの src フォルダーを閲覧して、各テンプレートの内容を確認できます。

Dev Containers: 開発コンテナー構成ファイルの追加... の使用の最後に、利用可能な機能のリストが表示されます。これらは、開発コンテナーに簡単にドロップできるツールと言語です。Dev Containers: コンテナー機能を構成を使用すると、既存の構成を更新できます。

Dev container features in Command Palette

既存の Dockerfile を再利用することもできます

Select Dockerfile

これで devcontainer.json と Dockerfile ができたので、コンテナー構成ファイルを編集する一般的なプロセスを見てみましょう。

完全な構成編集ループ

コンテナ設定の編集は簡単です。コンテナを再構築すると、コンテナが開始時の内容(ローカルのソースコードを除く)に「リセット」されるため、コンテナ設定ファイル(devcontainer.jsonDockerfiledocker-compose.yml)を編集しても、VS Codeは自動的に再構築しません。代わりに、設定の編集を容易にするためにいくつかのコマンドを使用できます。

これらのコマンドを使用する典型的な編集ループは次のとおりです。

Container edit loop illustration

  1. コマンドパレット (F1) で Dev Containers: 開発コンテナー構成ファイルの追加... から始めます。
  2. .devcontainer フォルダーの内容を必要に応じて編集します。
  3. Dev Containers: コンテナーで再開 で試してください。
  4. エラーが表示された場合は、表示されるダイアログで ローカルでフォルダーを開く を選択します。
  5. ウィンドウが再ロードされると、問題の原因を調査できるように、ビルドログのコピーがコンソールに表示されます。必要に応じて .devcontainer フォルダーの内容を編集します。(閉じてしまっても、Dev Containers: コンテナーログを表示コマンドでログを再度表示できます。)
  6. Dev Containers: コンテナーを再構築して再開を実行し、必要に応じてステップ 4 にスキップします。

すでにビルドに成功している場合でも、コンテナーに接続した状態で必要に応じて .devcontainer フォルダーの内容を編集し、コマンドパレット (F1) で Dev Containers: コンテナーを再構築 を選択して変更を反映させることができます。

Dev Containers: コンテナーボリュームでリポジトリをクローンコマンドを使用している場合も、コンテナーで反復処理を行うことができます。

  1. コマンドパレット (F1) で Dev Containers: コンテナーボリュームでリポジトリをクローン から始めます。入力したリポジトリに devcontainer.json がない場合は、開始点を選択するように求められます。
  2. .devcontainer フォルダーの内容を必要に応じて編集します。
  3. Dev Containers: コンテナーを再構築 で試してください。
  4. エラーが表示された場合は、表示されるダイアログで リカバリーコンテナーで開く を選択します。
  5. この「回復コンテナー」で、必要に応じて .devcontainer フォルダーの内容を編集します。
  6. 問題がまだ解決しない場合は、Dev Containers: コンテナーで再開 を使用してステップ 4 に進みます。

Docker Compose を使用する

場合によっては、単一のコンテナー環境では不十分です。データベースのように、別の複雑なコンポーネントを構成に追加したいとします。直接 Dockerfile に追加しようとすることもできますが、追加のコンテナーを介して追加することもできます。幸いなことに、Dev Containers はDocker Compose 管理のマルチコンテナー構成をサポートしています。

次のいずれかの方法があります。

  1. 既存の変更されていない docker-compose.yml で定義されたサービスを操作する。
  2. サービスを開発するために使用する新しい docker-compose.yml を作成する (または既存のものをコピーする)。
  3. サービスを開発するために既存の Docker Compose 構成を拡張する
  4. 複数の Docker Compose で定義されたサービスを同時に操作するために、個別の VS Code ウィンドウを使用します。

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

VS Code は、Docker Compose ファイル内の特定のサービスに必要なコンテナーを自動的に起動するように構成できます。コマンドラインを使用して構成済みのコンテナーをすでに起動している場合、VS Code は代わりに指定した実行中のサービスにアタッチします。これにより、マルチコンテナーワークフローは、上記の Docker イメージおよび Dockerfile ワークフローで説明したのと同じ迅速なセットアップの利点を提供しながら、必要に応じてコマンドラインを使用することもできます。

すぐに開始するには、VS Code で作業したいフォルダーを開き、コマンドパレット (F1) で Dev Containers: 開発コンテナー構成ファイルの追加... コマンドを実行します。

フォルダーの内容に基づいて並べ替えられたフィルター可能なリストから、ファーストパーティおよびコミュニティインデックスの定義済みコンテナー構成を選択するよう求められます。VS Code UI から、Docker Compose の開始点として次のテンプレートのいずれかを選択できます。

  • 既存の Docker Compose - プロジェクトのルートにある docker-compose.yml ファイルを再利用する、既存のプロジェクトにドロップできるファイルセットが含まれています。
  • Node.js & MongoDB - 別のコンテナー内の MongoDB データベースに接続する Node.js コンテナー。
  • Python & PostgreSQL - 別のコンテナー内の PostgreSQL に接続する Python コンテナー。
  • Docker-Outside-of-Docker Compose - Docker CLI を含み、Docker Unix ソケットをボリュームマウントすることで、開発コンテナー内からローカル Docker インストールにアクセスする方法を示します。

選択すると、VS Code は適切な .devcontainer/devcontainer.json (または .devcontainer.json) ファイルをフォルダーに追加します。

手動で設定を作成することもできます。Docker Compose ファイルを変更せずに再利用するには、.devcontainer/devcontainer.jsondockerComposeFileservice プロパティを使用できます。

{
  "name": "[Optional] Your project name here",
  "dockerComposeFile": "../docker-compose.yml",
  "service": "the-name-of-the-service-you-want-to-work-with-in-vscode",
  "workspaceFolder": "/default/workspace/path/in/container/to/open",
  "shutdownAction": "stopCompose"
}

workspaceFoldershutdownAction など、利用可能なその他のプロパティについては、devcontainer.json リファレンスを参照してください。

.devcontainer/devcontainer.json ファイルをフォルダーに追加したら、コマンドパレット (F1) から Dev Containers: コンテナーで再開 コマンド (コンテナー内にまだいない場合は Dev Containers: コンテナーでフォルダーを開く...) を実行します。

コンテナーがまだ実行されていない場合、VS Code はこの例では docker-compose -f ../docker-compose.yml up を呼び出します。service プロパティは、どのサービスを開始するかではなく、VS Code が Docker Compose ファイル内のどのサービスに接続すべきかを示します。手動で開始した場合、VS Code は指定したサービスにアタッチします。

Docker Compose ファイルの開発コピーを作成することもできます。たとえば、.devcontainer/docker-compose.devcontainer.yml がある場合、devcontainer.json の次の行を変更するだけです。

"dockerComposeFile": "docker-compose.devcontainer.yml"

ただし、Docker Compose ファイルのコピーを作成しないようにするより良い方法は、別のファイルで拡張することです。次のセクションでDocker Compose ファイルを拡張するについて説明します。

既定のコンテナーコマンドが失敗したり終了したりしてもコンテナーがシャットダウンしないようにするには、devcontainer.json で指定したサービスの Docker Compose ファイルを次のように変更します。

# Overrides default command so things don't shut down after the process ends.
command: /bin/sh -c "while sleep 1000; do :; done"

まだ行っていない場合は、Docker Compose ファイルのボリュームリストを使用して、ローカルソースコードをコンテナーに「バインド」マウントできます

volumes:
  # Mounts the project folder to '/workspace'. The target path inside the container
  # should match what your application expects. In this case, the compose file is
  # in a sub-folder, so you will mount '..'. You would then reference this path as the
  # 'workspaceFolder' in '.devcontainer/devcontainer.json' so VS Code starts here.
  - ..:/workspace:cached

ただし、Linux では、バインドマウントを使用する場合、または作成するファイルがルートになる場合は、非ルートユーザーを設定して指定する必要がある場合があります。詳細については、開発コンテナーに非ルートユーザーを追加するを参照してください。VS Code を別のユーザーとして実行するには、これを devcontainer.json に追加します。

"remoteUser": "your-user-name-here"

すべてのプロセスを別のユーザーとして実行したい場合は、Docker Compose ファイルの適切なサービスにこれを追加します。

user: your-user-name-here

開発用のカスタム Dockerfile を作成していない場合でも、サービスのコンテナー内に curl などの追加の開発者ツールをインストールしたい場合があります。これらのツールをコンテナーイメージに追加するよりも効率的ではありませんが、この目的で postCreateCommand プロパティを使用することもできます。

ソフトウェアのインストールに関する詳細については追加ソフトウェアのインストールを、postCreateCommand プロパティに関する詳細についてはdevcontainer.json リファレンスを参照してください。

C++、Go、Rust、または ptrace ベースのデバッガーを使用するその他の言語を使用してアプリケーションがビルドされた場合、Docker Compose ファイルに次の設定も追加する必要があります。

# Required for ptrace-based debuggers like C++, Go, and Rust
cap_add:
- SYS_PTRACE
security_opt:
- seccomp:unconfined

コンテナーを初めて作成した後、devcontainer.json、Docker Compose ファイル、または関連する Dockerfile への更新を有効にするには、Dev Containers: コンテナーを再構築コマンドを実行する必要があります。

Docker Compose で localhost を使用する

Docker のドキュメントで説明されているように、他のサービスを docker-compose.yml ファイルに追加できます。ただし、このサービスで実行されているものをコンテナーの localhost で利用できるようにしたい場合、またはサービスをローカルに転送したい場合は、必ずサービス構成にこの行を追加してください。

# Runs the service on the same network as the database container, allows "forwardPorts" in devcontainer.json function.
network_mode: service:db

Node.js と MongoDB の例の開発コンテナーnetwork_mode: service:db の例を見ることができます。

Docker Compose ファイルを開発用に拡張する

既存のデプロイ/非開発に特化した docker-compose.yml を参照することには、いくつかの潜在的な欠点があります。

  • Docker Compose は、エントリポイントがシャットダウンするとコンテナをシャットダウンします。これは、デバッグ中でアプリを繰り返し再起動する必要がある状況では問題となります。
  • また、ローカルファイルシステムをコンテナーにマッピングしていないか、アクセスしたいデータベースのような他のリソースにポートを公開していない可能性があります。
  • ローカルの .ssh フォルダーの内容をコンテナーにコピーしたり、Docker Compose の使用で説明した ptrace オプションを設定したりしたい場合があります。

これらの問題やその他の同様の問題は、既存の Docker Compose 設定を複数の docker-compose.yml ファイルで拡張し、主要なものをオーバーライドまたは補足することで解決できます。

たとえば、この追加の .devcontainer/docker-compose.extend.yml ファイルを検討してください。

version: '3'
services:
  your-service-name-here:
    volumes:
      # Mounts the project folder to '/workspace'. While this file is in .devcontainer,
      # mounts are relative to the first file in the list, which is a level up.
      - .:/workspace:cached

    # [Optional] Required for ptrace-based debuggers like C++, Go, and Rust
    cap_add:
      - SYS_PTRACE
    security_opt:
      - seccomp:unconfined

    # Overrides default command so things don't shut down after the process ends.
    command: /bin/sh -c "while sleep 1000; do :; done"

この同じファイルは、必要に応じてポートマッピングなどの追加の設定を提供できます。使用するには、元の docker-compose.yml ファイルに加えて、.devcontainer/docker-compose.extend.yml を特定の順序で参照します。

{
  "name": "[Optional] Your project name here",

  // The order of the files is important since later files override previous ones
  "dockerComposeFile": ["../docker-compose.yml", "docker-compose.extend.yml"],

  "service": "your-service-name-here",
  "workspaceFolder": "/workspace",
  "shutdownAction": "stopCompose"
}

VS Code は、コンテナーを起動する際に両方のファイルを自動的に使用します。コマンドラインから次のように自分で起動することもできます。

docker-compose -f docker-compose.yml -f .devcontainer/docker-compose.extend.yml up

postCreateCommand プロパティを使用すると、コンテナー内にさらにツールをインストールできますが、場合によっては、開発用に特定の Dockerfile を持ちたい場合があります。この同じアプローチを使用して、既存の Docker Compose ファイルを変更せずに、開発専用のカスタム Dockerfile を参照することもできます。たとえば、.devcontainer/docker-compose.extend.yml を次のように更新できます。

version: '3'
services:
  your-service-name-here:
      # Note that the path of the Dockerfile and context is relative to the *primary*
      # docker-compose.yml file (the first in the devcontainer.json "dockerComposeFile"
      # array). The sample below assumes your primary file is in the root of your project.
      build:
        context: .
        dockerfile: .devcontainer/Dockerfile
      volumes:
        - .:/workspace:cached
      command: /bin/sh -c "while sleep 1000; do :; done"

おめでとうございます!Visual Studio Code で開発コンテナーを構成できました。チームメイトやさまざまなプロジェクト間でコンテナー構成を共有する方法については、引き続きお読みください。

構成ファイルをリポジトリに追加する

devcontainer.json ファイルをソース管理に追加することで、プロジェクトのカスタマイズされた開発コンテナーテンプレートを簡単に共有できます。これらのファイルをリポジトリに含めることで、Dev Containers 拡張機能がインストールされていれば、VS Code でリポジトリのローカルコピーを開く人は誰でも、自動的にフォルダーをコンテナーで再度開くよう促されます。

Dev container configuration file reopen notification

チームが統一された環境とツールチェーンを使用できるという利点に加えて、これにより、新しい貢献者やチームメンバーが迅速に生産的になることも容易になります。初めての貢献者は、環境設定に関連するガイダンスが少なく、問題に遭遇する回数も減ります。

開発コンテナーで開くバッジを追加する

リポジトリにバッジやリンクを追加して、ユーザーが開発コンテナーでプロジェクトを簡単に開くようにすることもできます。必要に応じて開発コンテナー拡張機能をインストールし、リポジトリをコンテナーボリュームにクローンし、開発コンテナーを起動します。

例として、https://github.com/microsoft/vscode-remote-try-javaを開くバッジは次のようになります。

[![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/vscode-remote-try-java)

open in dev container リンクを直接含めることもできます。

If you already have VS Code and Docker installed, you can click the badge above or [here](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/vscode-remote-try-java) to get started. Clicking these links will cause VS Code to automatically install the Dev Containers extension if needed, clone the source code into a container volume, and spin up a dev container for use.

代替:リポジトリ構成フォルダー

場合によっては、制御できないリポジトリや、リポジトリ自体に構成を含めないことを希望するリポジトリの構成を作成したい場合があります。この状況を処理するために、ローカルファイルシステム上の場所に構成ファイルを保存するように構成でき、リポジトリに基づいて自動的に取得されます。

まず、Dev > コンテナー: リポジトリ構成パスユーザー設定を、リポジトリコンテナー構成ファイルを保存するために使用したいローカルフォルダーで更新します。

設定エディタで「dev containers repo」を検索すると、その設定を見つけることができます。

Repository container folders setting

次に、.devcontainer/devcontainer.json (および関連ファイル) を、リポジトリのリモートの場所をミラーリングするサブフォルダーに配置します。たとえば、github.com/devcontainers/templates の構成を作成したい場合、次のフォルダー構造を作成します。

📁 github.com
    📁 devcontainers
        📁 templates
           📁 .devcontainer

一度設定すると、開発コンテナーのコマンドを使用すると、自動的に設定が取得されます。コンテナー内では、コマンドパレット (F1) からDev Containers: コンテナー構成ファイルを開くを選択して、関連する devcontainer.json ファイルを開き、さらに編集することもできます。

構成の検索に使用されるパスは、git remote -v の出力から派生します。コンテナーでフォルダーを再度開こうとしたときに構成が見つからない場合は、コマンドパレット (F1) のDev Containers: コンテナーログを表示で、チェックされたパスのリストを確認してください。

次のステップ