啟動 Compose 服務的子集

如果您有包含多個服務並使用 Docker Compose 的應用程式,您可以在 Docker Compose 啟動設定中建立或編輯現有的啟動設定檔,以設定要執行和偵錯的服務。 啟動設定檔可讓您只動態執行對您目前案例很重要的服務。 您可以建立並選取啟動設定檔以自訂偵錯體驗,並設定特定的啟動動作,例如 Browser Launch URL。 您也可以選擇個別選擇每個服務,或選擇 Docker Compose 設定檔,這也會查看您的 Compose 檔案,以判斷要執行的服務群組。

如需 Docker Compose 設定檔的相關資訊,請參閱搭配 Compose 使用設定檔

必要條件

管理啟動設定

請考慮下列 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 啟動設定]

    [偵錯管理 Compose 設定] 功能表項目的螢幕擷取畫面

    [偵錯管理 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 (屬於 webweb1 Compose 設定檔), external1 以及 external2。 根據預設,沒有原始程式碼的服務如 external1external2,具有 [啟動但不偵錯] 的預設動作。 具有原始程式碼的 .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 定義啟動設定檔定義的父屬性。 其子屬性為 includesserviceActions
composeProfile - include 組成啟動設定檔的 Compose 設定檔名稱清單。
composeProfile - serviceActions 列出選取的 Compose 設定檔、服務和每個服務的啟動動作
serviceActions 列出選取的服務和啟動動作。
composeLaunchAction 指定要在按下 F5Ctrl+F5 時執行的啟動動作。 允許的值為 None、LaunchBrowser 和 LaunchWCFTestClient。
composeLaunchUrl 啟動瀏覽器時要使用的 URL。 有效的取代權杖為 「{ServiceIPAddress}」、「{ServicePort}」和「{Scheme}」。 例如:{Scheme}://{ServiceIPAddress}:{ServicePort}
composeLaunchServiceName 指定用來取代 composeLaunchUrl 中權杖的服務。