啟動 Compose 服務的子集
如果您有包含多個服務並使用 Docker Compose 的應用程式,您可以在 Docker Compose 啟動設定中建立或編輯現有的啟動設定檔,以設定要執行和偵錯的服務。 啟動設定檔可讓您只動態執行對您目前案例很重要的服務。 您可以建立並選取啟動設定檔以自訂偵錯體驗,並設定特定的啟動動作,例如 Browser Launch URL
。 您也可以選擇個別選擇每個服務,或選擇 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 專案,其中 docker-compose.yml 有五個服務和三個 Compose 設定檔 (web、web1 和 web2)。
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 設定檔,這會將服務清單篩選至該設定檔中包含的五分之三:
注意
只有在 docker-compose.yml 檔案中定義了設定檔時,才會顯示 Docker Compose 設定檔區段。
下一個範例示範在個別服務之間選取,而不是篩選至 Compose 設定檔中的服務。 在這裡,如果您建立了名為 test2
的新啟動設定檔,其只會在五個服務中啟動兩個,webapplication1
包含偵錯而 webapplication2
不含偵錯,我們將示範對話方塊的外觀。 此啟動設定檔也會在應用程式啟動時啟動瀏覽器,並將其開啟至 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
。 根據預設,沒有原始程式碼的服務如 external1
和 external2
,具有 [啟動但不偵錯] 的預設動作。 具有原始程式碼的 .NET 應用程式將預設為 [開始偵錯]。
重要
如果服務未指定 Compose 設定檔,則會隱含地包含在所有 Compose 設定檔中。
此資訊將會儲存,如下列程式碼所示。 除非您變更預設動作,否則不會儲存服務及其預設動作的設定。
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
]
},
"commandVersion": "1.0"
}
}
}
您也可以將 webapplication1 的動作變更為 [啟動但不偵錯]。 則 launchSettings.json 中的設定如下列程式碼所示:
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
],
"serviceActions": {
"webapplication1": "StartWithoutDebugging"
}
},
"commandVersion": "1.0"
}
}
}
屬性
以下是 launchSettings.json 中每個屬性的描述:
屬性 | 說明 |
---|---|
commandName | 命令的名稱。 預設為 "DockerCompose" |
commandVersion | 用來管理 DockerCompose 啟動設定檔架構的版本號碼。 |
composeProfile | 定義啟動設定檔定義的父屬性。 其子屬性為 includes 和 serviceActions |
composeProfile - include | 組成啟動設定檔的 Compose 設定檔名稱清單。 |
composeProfile - serviceActions | 列出選取的 Compose 設定檔、服務和每個服務的啟動動作 |
serviceActions | 列出選取的服務和啟動動作。 |
composeLaunchAction | 指定要在按下 F5 或 Ctrl+F5 時執行的啟動動作。 允許的值為 None、LaunchBrowser 和 LaunchWCFTestClient。 |
composeLaunchUrl | 啟動瀏覽器時要使用的 URL。 有效的取代權杖為 「{ServiceIPAddress}」、「{ServicePort}」和「{Scheme}」。 例如:{Scheme}://{ServiceIPAddress}:{ServicePort} |
composeLaunchServiceName | 指定用來取代 composeLaunchUrl 中權杖的服務。 |