Compose サービスのサブセットを起動する
複数のサービスで構成され、Docker Compose を使用するアプリケーションがある場合は、Docker Compose 起動設定で既存の起動プロファイルを作成または編集することで、実行およびデバッグするサービスを構成できます。 起動プロファイルを使用すると、現在のシナリオに関係するサービスのみを動的に実行できます。 デバッグ エクスペリエンスをカスタマイズし、Browser Launch URL
などの特定の起動アクションを設定するために、起動プロファイルを作成して選択できます。 また、各サービスを個別に選択するか、Docker Compose プロファイルを選択することもできます。Docker Compose プロファイルは、実行するサービスのグループを決定するために Compose ファイルも確認します。
Docker Compose プロファイルの詳細については、「Composeでのプロファイルの使用」を参照してください。
前提 条件
- Visual Studio 2019 バージョン 16.10 以降
- Docker Compose を使用 コンテナー オーケストレーションを使用する .NET ソリューション
- Visual Studio 2022 または Visual Studio 2019 バージョン 16.10 以降
- Docker Compose を使用 コンテナー オーケストレーションを使用する .NET ソリューション
起動設定の管理
docker-compose.yml に 5 つのサービスと 3 つの Compose プロファイル (Web、web1、Web2) がある次の Docker Compose プロジェクトについて考えてみましょう。
version: '3.9'
services:
webapplication1:
image: ${DOCKER_REGISTRY-}webapplication1
profiles: [web, web1]
build:
context: .
dockerfile: WebApplication1/Dockerfile
webapplication2:
image: ${DOCKER_REGISTRY-}webapplication2
profiles: [web, web2]
build:
context: .
dockerfile: WebApplication2/Dockerfile
webapplication3:
image: ${DOCKER_REGISTRY-}webapplication3
profiles: [web]
build:
context: .
dockerfile: WebApplication3/Dockerfile
external1:
image: redis
external2:
image: redis
Docker Compose の起動設定ダイアログを開くには、いくつかのオプションがあります。
Visual Studio で、[デバッグ] >[Docker Compose 起動設定の管理]選択します。
Visual Studio の
docker-compose
プロジェクトを右クリックし、[Docker Compose 起動設定の管理] を選択しますのスクリーンショット
のスクリーンショット
クイック起動 (Ctrl+Q) を使用して、Docker Compose を探し、同じコマンドを見つけます。
次の例では、web1
Compose プロファイルが選択されています。これにより、[サービス] 一覧がこのプロファイルに含まれる 5 つのうち 3 つにフィルター処理されます。
手記
Docker Compose プロファイル セクションは、docker-compose.yml ファイルに定義されているプロファイルがある場合にのみ表示されます。
次の例では、Compose プロファイル内のサービスにフィルター処理するのではなく、個々のサービスを選択する方法を示します。 ここでは、5つのサービスのうち2つ、デバッグありの webapplication1
とデバッグなしの webapplication2
のみを開始する、新たに作成した起動プロファイル test2
におけるダイアログの見え方を示します。 この起動プロファイルは、アプリケーションの起動時にブラウザーを起動し、webapplication1
のホーム ページに開きます。
この情報は、次に示すように launchSettings.json に保存されます
{
"profiles": {
"test2": {
"commandName": "DockerCompose",
"composeLaunchServiceName": "webapplication1",
"serviceActions": {
"external1": "DoNotStart",
"external2": "DoNotStart",
"webapplication1": "StartDebugging",
"webapplication2": "StartWithoutDebugging",
"webapplication3": "DoNotStart"
},
"composeLaunchAction": "LaunchBrowser",
"commandVersion": "1.0",
"composeLaunchUrl": "{Scheme}://localhost:{ServicePort}"
}
}
}
Docker Compose プロファイルを使用する起動プロファイルを作成する
Compose プロファイルを使用する Visual Studio 起動プロファイルを作成することで、起動動作をさらにカスタマイズすることもできます。
Compose プロファイルを使用する別のプロファイルを作成するには、Docker Compose プロファイル 使用を選択し、web1
を選択します。 起動プロファイルには、webapplication1
(web
プロファイルと web1
Compose プロファイルの両方に属する)、external1
、および external2
の 3 つのサービスが含まれます。 既定では、external1
や external2
などのソース コードのないサービスでは、をデバッグせずにStart という既定のアクションが実行されます。 ソース コードを含む .NET アプリケーションでは、既定で [デバッグ開始] が設定されます。
重要
サービスで Compose プロファイルが指定されていない場合は、すべての Compose プロファイルに暗黙的に含まれます。
この情報は、次のコードに示すように保存されます。 既定のアクションを変更しない限り、サービスとその既定のアクションの構成は保存されません。
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
]
},
"commandVersion": "1.0"
}
}
}
をデバッグせずに、webapplication1 のアクションをStart に変更することもできます。 launchSettings.json の設定は、次のコードのようになります。
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
],
"serviceActions": {
"webapplication1": "StartWithoutDebugging"
}
},
"commandVersion": "1.0"
}
}
}
プロパティ
launchSettings.jsonの各プロパティの説明を次に示します。
財産 | 説明 |
---|---|
コマンド名 | コマンドの名前。 既定値は "DockerCompose" です |
commandVersion | DockerCompose 起動プロファイルのスキーマを管理するために使用されるバージョン番号。 |
プロフィール作成 | 起動プロファイル定義を定義する親プロパティ。 その子プロパティは includes と serviceActions です |
composeProfile - includes | 起動プロファイルを構成する Compose プロファイル名の一覧。 |
composeProfile - serviceActions | 選択した Compose プロファイル、サービス、および各サービスの起動アクションを一覧表示します |
serviceActions | 選択したサービスと起動アクションを一覧表示します。 |
起動アクションを作成 | F5 または Ctrl+F5で実行する起動アクションを指定します。 使用できる値は None、LaunchBrowser、LaunchWCFTestClient です。 |
起動URLを作成 | ブラウザーの起動時に使用する URL。 有効な置換トークンは、"{ServiceIPAddress}"、"{ServicePort}"、および "{Scheme}" です。 例: {Scheme}://{ServiceIPAddress}:{ServicePort} |
composeLaunchServiceName | composeLaunchUrl 内のトークンを置き換える際に使用するサービスを指定します。 |