啟動 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 配置檔],這會將 Services 清單縮減為該配置檔中包含的五項服務中的三項:
注意
只有在 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 的動作變更為 Start,而不偵錯。 launchSettings.json 中的設定看起來會像下列程式代碼:
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
],
"serviceActions": {
"webapplication1": "StartWithoutDebugging"
}
},
"commandVersion": "1.0"
}
}
}
性能
以下是 launchSettings.json中每個屬性的描述:
財產 | 描述 |
---|---|
指令名稱 | 命令的名稱。 預設為「DockerCompose」 |
commandVersion | 用來管理 DockerCompose 啟動設定檔架構的版本號碼。 |
撰寫個人資料 | 定義啟動配置檔的父屬性。 其子屬性是 includes 和 serviceActions |
composeProfile - 包含 | 組成啟動配置檔的 Compose 設定檔名稱清單。 |
composeProfile - serviceActions | 列出選定的 Compose 配置檔、服務,以及每個服務的啟動操作 |
serviceActions | 列出選取的服務和啟動動作。 |
composeLaunchAction | 指定要在 F5 或 Ctrl+F5上執行的啟動動作。 允許的值為 None、LaunchBrowser 和 LaunchWCFTestClient。 |
composeLaunchUrl | 啟動瀏覽器時要使用的URL。 有效的取代令牌為 “{ServiceIPAddress}”、“{ServicePort}” 和 “{Scheme}”。 例如:{Scheme}://{ServiceIPAddress}:{ServicePort} |
composeLaunchServiceName | 指定用於替換 composeLaunchUrl 中標記的服務。 |