Запуск подмножества служб Compose
При наличии приложения, состоящего из нескольких служб и использующего Docker Compose, можно настроить, какие службы будут запущены и отлажены, путем создания или изменения существующего профиля запуска в параметрах запуска Docker Compose. Профили запуска позволяют динамически запускать только службы, которые имеют отношение к текущему сценарию. Вы можете создавать и выбирать профили запуска, чтобы настроить процесс отладки и задать определенные действия запуска, такие как Browser Launch URL
. Кроме того, можно выбрать каждую службу по отдельности или выбрать профиль Docker Compose, который также будет искать файл Compose, чтобы определить какую группу служб следует запустить.
Дополнительные сведения о профилях Docker Compose см. в разделе Использование профилей с Compose.
Необходимые компоненты
- Visual Studio 2019 версии 16.10 или более поздней.
- Решение .NET с Согласованием контейнеров с Docker Compose.
- Visual Studio 2022, Visual Studio 2019 версии 16.10 или более поздней.
- Решение .NET с Согласованием контейнеров с Docker 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"." data-linktype="relative-path"/>
"Управление параметрами запуска Compose"." data-linktype="relative-path"/>
Щелкните правой кнопкой мыши проект
docker-compose
Visual Studio и выберите пункт Управление параметрами запуска Docker Compose.Используйте быстрый запуск (CTRL+Q) и выполните поиск по Docker Compose, чтобы найти такую же команду.
В приведенном ниже примере выбирается профиль Compose web1
, который фильтрует список Службы до трех из пяти включенных в этот профиль:
Примечание.
Раздел профилей Docker Compose отображается только в том случае, если в файлах docker-compose.yml определены профили.
В следующем примере показано, как выбирать отдельные службы вместо фильтрации служб в профиле создания. Здесь мы покажем, как будет выглядеть диалоговое окно, если создать новый профиль запуска с именем 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
(которая принадлежит к профилям Compose web
и web1
) 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:
Свойство | Description |
---|---|
Commandname | Имя команды. По умолчанию значение DockerCompose |
commandVersion | Номер версии, используемый для управления схемой профиля запуска DockerCompose. |
composeProfile | Родительское свойство, дающее определение профиля запуска. Его дочерними свойствами являются 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. |