Поделиться через


Запуск подмножества служб 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:

    Снимок экрана пункта меню

    Снимок экрана: пункт меню

  • Щелкните правой кнопкой мыши на проекте docker-compose в Visual Studio и выберите Настройка параметров запуска Docker Compose

    Снимок экрана: пункт контекстного меню

    Снимок экрана: пункт контекстного меню

  • Используйте быстрый запуск (CTRL+Q) и выполните поиск Docker Compose, чтобы найти ту же команду.

В приведенном ниже примере выбран профиль Compose web1, который фильтрует список служб до трех из пяти, включенных в этот профиль.

Заметка

Раздел 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

Кроме того, можно дополнительно настроить поведение запуска, создав профили запуска в Visual Studio, которые используют Compose профили.

Чтобы создать другой профиль, который использует профиль Compose, выберите Использовать профили Docker Compose и выберите web1. Теперь профиль запуска включает три службы: webapplication1 (которая принадлежит как к профилю web, так и к профилю web1 Compose), external1и external2. По умолчанию службы без исходного кода, например 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:

Свойство Описание
commandName Имя команды. По умолчанию устанавливается "DockerCompose"
версия команды Номер версии, используемый для управления схемой профиля запуска DockerCompose.
составитьПрофиль Родительское свойство, задающее параметры профиля запуска. Его дочерние свойства includes и serviceActions
composeProfile — включает в себя Список имен профилей Compose, составляющих профиль запуска.
composeProfile – serviceActions Списки выбранных профилей Compose, серверов и действия, выполняемые при запуске каждого сервера
serviceActions Перечисляет выбранные службы и действие запуска.
СоставитьДействиеЗапуска Указывает действие запуска для выполнения F5 или CTRL+F5. Допустимые значения: None, LaunchBrowser и LaunchWCFTestClient.
composeLaunchUrl URL-адрес, используемый при запуске браузера. Допустимые маркеры замены: "{ServiceIPAddress}", "{ServicePort}" и "{Scheme}". Например: {Scheme}://{ServiceIPAddress}:{ServicePort}
СоставитьИмяСлужбыЗапуска Указывает службу, используемую для замены маркеров в composeLaunchUrl.