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


Свойства сборки Docker Compose

Помимо свойств, управляющих отдельными проектами Docker, описанными в разделе свойства сборки средств контейнеров, можно также настроить сборку проектов Docker Compose, задав свойства Docker Compose, которые MSBuild использует для создания решения. Вы также можете контролировать, как отладчик Visual Studio запускает приложения Docker Compose, задав метки файлов в файлах конфигурации Docker Compose.

Настройка свойств MSBuild

Чтобы задать значение свойства, измените файл проекта. Для свойств Docker Compose этот файл проекта является одним из них с расширением .dcproj, если в таблице в следующем разделе не указано иное. Например, предположим, что вы хотите указать, чтобы запустить браузер при запуске отладки. Свойство DockerLaunchAction можно задать в файле проекта .dcproj следующим образом.

<PropertyGroup>
   <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>

Вы можете добавить параметр свойства в существующий элемент PropertyGroup или создать новый элемент PropertyGroup.

Свойства Docker Compose MSBuild

В следующей таблице показаны свойства MSBuild, доступные для проектов Docker Compose (.dcproj файлов).

Имя свойства Описание
AdditionalComposeFilePaths Указывает дополнительные файлы создания в списке с точками с запятой, которые будут отправляться в docker-compose.exe для всех команд. Допустимы относительные пути из файла проекта Docker Compose (dcproj).
DependencyAwareStart Включает другой способ запуска приложения, который поддерживает свойства Docker Compose depends_on и healthcheck, которые контролируют порядок запуска службы и проверки работоспособности.

Требуется Visual Studio 17.13 или более поздней версии.

Значение по умолчанию: False
DockerComposeBaseFilePath Указывает первую часть имен файлов Docker Compose без расширения .yml. Например:
1. DockerComposeBaseFilePath = null/undefined: используйте базовый путь к файлу docker-compose, а файлы будут называться docker-compose.yml и docker-compose.override.yml.
2. DockerComposeBaseFilePath = mydockercompose: файлы будут называться mydockercompose.yml и mydockercompose.override.yml.
3. DockerComposeBaseFilePath = .. \mydockercompose: файлы будут выше одного уровня.

Значение по умолчанию: docker-compose
DockerComposeBuildArguments Указывает дополнительные параметры, передаваемые команде docker-compose build. Например, --parallel --pull.
DockerComposeDownArguments Указывает дополнительные параметры, передаваемые команде docker-compose down. Например, --timeout 500.
DockerComposeEnvFilePath Относительный путь к env-файлу, который передается docker compose командам через --env-file. См. Использование атрибута env_file.

Значение по умолчанию: пустое
DockerComposeProjectName При указании переопределяет имя проекта Для проекта Docker Compose.

Значение по умолчанию: "dockercompose" + автоматически созданный хэш
DockerComposeProjectsToIgnore Указывает, что проекты, которые будут игнорироваться средствами Docker Compose во время отладки. Это свойство можно использовать для любого проекта. Пути к файлам можно указать одним из двух способов:
1. Относительно dcproj. Например, <DockerComposeProjectsToIgnore> path\to\AngularProject1.csproj </DockerComposeProjectsToIgnore>.
2. Абсолютные пути.
примечание. Пути должны быть разделены символом разделителя ;.
DockerComposeUpArguments Указывает дополнительные параметры, передаваемые команде docker-compose up. Например, --timeout 500.
DockerDevelopmentMode Определяет, встроен ли проект пользователя в контейнер. Допустимые значения fast или Regular control , какие этапы создаются в Dockerfile. Конфигурация отладки — это быстрый режим по умолчанию и обычный режим в противном случае.

Значение по умолчанию: Fast
DockerLaunchAction Указывает действие запуска для выполнения в F5 или CTRL+F5. Допустимые значения: None, LaunchBrowser и LaunchWCFTestClient.

Значение по умолчанию: None
DockerLaunchBrowser Указывает, следует ли запускать браузер. Игнорируется, если указан DockerLaunchAction.

Значение по умолчанию: False
DockerServiceName Если задан DockerLaunchAction или DockerLaunchBrowser, то DockerServiceName указывает, какая служба, на которую ссылается файл docker-compose, запускается.
DockerServiceUrl URL-адрес, используемый при запуске браузера. Допустимые маркеры замены: "{ServiceIPAddress}", "{ServicePort}" и "{Scheme}". Например: {Scheme}://{ServiceIPAddress}:{ServicePort}
DockerTargetOS Целевая ОС, используемая при создании образа Docker.

Кроме того, свойство DockerComposeProjectPath в файле проекта .csproj или .vbproj указывает относительный путь к файлу проекта Docker Compose (.dcproj). Задайте это свойство при публикации проекта службы, чтобы найти связанные параметры сборки образа, хранящиеся в файле docker-compose.yml.

Пример

Если изменить расположение файлов docker-compose, задав DockerComposeBaseFilePath относительный путь, необходимо также убедиться, что контекст сборки изменен таким образом, чтобы он ссылался на папку решения. Например, если файл docker-compose является папкой с именем DockerComposeFiles, то файл Docker Compose должен задать контекст сборки на "." или ".. /.", в зависимости от того, где он относится к папке решения.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
  <PropertyGroup Label="Globals">
    <ProjectVersion>2.1</ProjectVersion>
    <DockerTargetOS>Windows</DockerTargetOS>
    <ProjectGuid>154022c1-8014-4e9d-bd78-6ff46670ffa4</ProjectGuid>
    <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
    <DockerServiceUrl>{Scheme}://{ServiceIPAddress}{ServicePort}</DockerServiceUrl>
    <DockerServiceName>webapplication1</DockerServiceName>
    <DockerComposeBaseFilePath>DockerComposeFiles\mydockercompose</DockerComposeBaseFilePath>
    <AdditionalComposeFilePaths>AdditionalComposeFiles\myadditionalcompose.yml</AdditionalComposeFilePaths>
  </PropertyGroup>
  <ItemGroup>
    <None Include="DockerComposeFiles\mydockercompose.override.yml">
      <DependentUpon>DockerComposeFiles\mydockercompose.yml</DependentUpon>
    </None>
    <None Include="DockerComposeFiles\mydockercompose.yml" />
    <None Include=".dockerignore" />
  </ItemGroup>
</Project>

Файл mydockercompose.yml должен выглядеть следующим образом, при этом контекст сборки должен иметь относительный путь к папке решения (в данном случае ..).

version: '3.4'

services:
  webapplication1:
    image: ${DOCKER_REGISTRY-}webapplication1
    build:
      context: ..
      dockerfile: WebApplication1\Dockerfile

Заметка

DockerComposeBuildArguments, DockerComposeDownArguments и DockerComposeUpArguments являются новыми в Visual Studio 2019 версии 16.3.

Переопределение конфигурации Docker Compose в Visual Studio

Обычно docker-compose.override.yml используется для переопределения определенных параметров в docker-compose.yml. Кроме того, Visual Studio создает файлы переопределения docker-compose.vs.debug.g.yml (для режима быстрого ) и docker-compose.vs.release.g.yml (для файлов регулярного режима) с параметрами, характерными для запуска приложения в Visual Studio. Эти параметры Visual Studio можно переопределить, разместив файл с именем docker-compose.vs.debug.yml (для режима быстрого ) или docker-compose.vs.release.yml (для режима регулярного) в том же каталоге, что и файл docker-compose.yml. Щелкните правой кнопкой мыши проект Docker Compose и выберите Открыть папку в проводнике, а затем используйте добавить>существующий элемент, чтобы добавить файл в проект Docker Compose.

Кончик

Чтобы узнать значения по умолчанию для любого из параметров Visual Studio, просмотрите промежуточный выходной каталог (например, obj/Docker) для docker-compose.vs.debug.g.yml или docker-compose.vs.release.g.yml. Эти файлы создаются Visual Studio и не должны быть изменены.

Метки файлов Docker Compose

В docker-compose.vs.debug.yml или docker-compose.vs.release.ymlможно определить метки для переопределения следующим образом:

services:
  webapplication1:
    labels:
      com.microsoft.visualstudio.debuggee.workingdirectory: "C:\\my_app_folder"

Используйте двойные кавычки вокруг значений, как в предыдущем примере, и используйте обратную косую черту в качестве escape-символа для обратной косой черты в путях.

Имя метки Описание
com.microsoft.visualstudio.debuggee.program Программа запускается при запуске отладки. Для приложений .NET Core этот параметр обычно dotnet.
com.microsoft.visualstudio.debuggee.arguments Аргументы, переданные программе при запуске отладки. Для приложений .NET Core эти аргументы обычно являются дополнительными путями поиска для пакетов NuGet, за которым следует путь к выходной сборке проекта.
com.microsoft.visualstudio.debuggee.workingdirectory Каталог, используемый в качестве начального каталога при запуске отладки. Обычно этот параметр /app для контейнеров Linux или C:\app для контейнеров Windows.
com.microsoft.visualstudio.debuggee.killprogram Эта команда используется для остановки программы отладки, работающей внутри контейнера (при необходимости).
Имя метки Описание
com.microsoft.visualstudio.debuggee.program Программа запускается при запуске отладки. Для приложений .NET Core этот параметр обычно dotnet.
com.microsoft.visualstudio.debuggee.arguments Аргументы, переданные программе при запуске отладки. Для приложений .NET Core эти аргументы обычно являются дополнительными путями поиска для пакетов NuGet, за которым следует путь к выходной сборке проекта.
com.microsoft.visualstudio.debuggee.workingdirectory Каталог, используемый в качестве начального каталога при запуске отладки. Обычно этот параметр /app для контейнеров Linux или C:\app для контейнеров Windows.
com.microsoft.visualstudio.debuggee.killprogram Эта команда используется для остановки программы отладки, работающей внутри контейнера (при необходимости).
com.microsoft.visualstudio.debuggee.noattach.program Программа, запущенная при использовании start без отладки (CTRL+F5) в проекте функций Azure, работающем в изолированно м процессе. Как правило, оба F5 и CTRL+F5 используют одну и ту же программу, но если любой тип проекта, например Функции Azure в изолированном процессе, требует другой программы, отличной от F5, то это будет использоваться.
com.microsoft.visualstudio.debuggee.noattach.arguments Аргументы, передаваемые программе при использовании start без отладки (CTRL+F5) в проекте функций Azure, работающем в изолированном процессе.
com.microsoft.visual-studio.project-name Имя проекта, которое помогает Visual Studio найти проект, если проект не находится в той же папке, что и Dockerfile.

Настройка процесса сборки Docker

Можно объявить этап сборки в Dockerfile с помощью параметра target в свойстве build. Это переопределение можно использовать только в docker-compose.vs.debug.yml или docker-compose.vs.release.yml

services:
  webapplication1:
    build:
      target: customStage
    labels:
      ...

Настройка процесса запуска приложения

Перед запуском приложения можно выполнить команду или настраиваемый скрипт с помощью параметра entrypoint и сделать его зависящим от DockerDevelopmentMode. Например, если необходимо настроить сертификат только в режиме быстрого , запустив update-ca-certificates, но не в режиме регулярного, можно добавить следующий код в толькоdocker-compose.vs.debug.yml:

services:
  webapplication1:
    entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
    labels:
      ...

Дополнительные сведения см. в разделе точка входа контейнера

Дальнейшие действия

Сведения о свойствах MSBuild, как правило, см. в свойства MSBuild.

См. также

свойства сборки средств контейнеров

параметры запуска средств контейнеров

Управление профилями запуска Для Docker Compose в Visual Studio

зарезервированные и известные свойства MSBuild