启动 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 启动设置

    “调试管理撰写设置”菜单项的屏幕截图

    “调试管理撰写设置”菜单项的屏幕截图

  • 右键单击 Visual Studio docker-compose 项目,然后选择 管理 Docker Compose 启动设置

    上下文菜单项的屏幕截图

    上下文菜单项的屏幕截图

  • 使用快速启动(Ctrl+Q)并搜索 Docker Compose 以查找相同的命令。

在下面的示例中,web1 Compose 配置文件处于选中状态,这将对“服务”列表进行筛选,使该配置文件中仅包含五个服务中的三个服务:

“启动设置对话框的屏幕截图”

说明

Docker Compose 配置文件部分仅在 docker-compose.yml 文件中定义了配置文件时才会出现。

下一个示例演示在单个服务之间进行选择,而不是筛选 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 配置文件)、external1external2。 默认情况下,不带源代码的服务(如 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 - includes 构成启动配置文件的 Compose 配置文件名称列表。
composeProfile - serviceActions 列出选定的 Compose 配置文件、服务以及每个服务的启动操作
serviceActions 列出所选服务和启动操作。
composeLaunchAction 指定要对 F5Ctrl+F5执行的启动操作。 允许的值为 None、LaunchBrowser 和 LaunchWCFTestClient。
composeLaunchUrl 启动浏览器时要使用的 URL。 有效的替换令牌为“{ServiceIPAddress}”、“{ServicePort}”和“{Scheme}”。 例如:{Scheme}://{ServiceIPAddress}:{ServicePort}
composeLaunchServiceName 指定用于替换 composeLaunchUrl 中的令牌的服务。