Compartir vía


Propiedades de compilación de Docker Compose

Además de las propiedades que controlan proyectos individuales de Docker, que se describen en propiedades de compilación de Container Tools, también puede personalizar cómo Visual Studio compila los proyectos de Docker Compose estableciendo las propiedades de Docker Compose que USA MSBuild para compilar la solución. También puede controlar cómo el depurador de Visual Studio ejecuta las aplicaciones de Docker Compose estableciendo etiquetas de archivo en archivos de configuración de Docker Compose.

Establecimiento de las propiedades de MSBuild

Para establecer el valor de una propiedad, edite el archivo de proyecto. En el caso de las propiedades de Docker Compose, este archivo de proyecto es el que tiene una extensión .dcproj, a menos que se indique lo contrario en la tabla de la sección siguiente. Por ejemplo, supongamos que desea especificar que inicie el explorador al iniciar la depuración. Puede establecer la propiedad DockerLaunchAction en el archivo de proyecto .dcproj como se indica a continuación.

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

Puede agregar el valor de propiedad a un elemento de PropertyGroup existente o, si no lo hay, crear un nuevo elemento PropertyGroup.

Propiedades de MSBuild de Docker Compose

En la tabla siguiente se muestran las propiedades de MSBuild disponibles para proyectos de Docker Compose (archivos.dcproj).

Nombre de propiedad Descripción
AdditionalComposeFilePaths Especifica archivos de redacción adicionales en una lista delimitada por punto y coma que se va a enviar a docker-compose.exe para todos los comandos. Se permiten rutas de acceso relativas desde el archivo de proyecto de Docker Compose (dcproj).
DependencyAwareStart Habilita una manera diferente de iniciar la aplicación que admite las propiedades de Docker Compose depends_on y healthcheck, que controlan el orden de inicio del servicio y las comprobaciones de estado.

Requiere Visual Studio 17.13 o posterior.

Valor predeterminado: False
DockerComposeBaseFilePath Especifica la primera parte de los nombres de archivo de los archivos de Docker Compose, sin la extensión .yml. Por ejemplo:
1. DockerComposeBaseFilePath = null/undefined: use la ruta de acceso del archivo base docker-compose, y los archivos se denominarán docker-compose.yml y docker-compose.override.yml.
2. DockerComposeBaseFilePath = mydockercompose: los archivos se denominarán mydockercompose.yml y mydockercompose.override.yml.
3. DockerComposeBaseFilePath = .. \mydockercompose: los archivos estarán en un nivel superior.

Valor predeterminado: docker-compose
DockerComposeBuildArguments Especifica los parámetros adicionales que se van a pasar al comando docker-compose build. Por ejemplo, --parallel --pull.
DockerComposeDownArguments Especifica los parámetros adicionales que se van a pasar al comando docker-compose down. Por ejemplo, --timeout 500.
DockerComposeEnvFilePath Ruta de acceso relativa a un archivo .env que se pasa a docker compose comandos a través de --env-file. Consulte Use the env_file attribute.

Valor predeterminado: Vacío
DockerComposeProjectName Si se especifica, invalida el nombre del proyecto para un proyecto de Docker Compose.

Valor predeterminado: "dockercompose" + hash generado automáticamente
DockerComposeProjectsToIgnore Especifica los proyectos que las herramientas de Docker Compose deben omitir durante la depuración. Esta propiedad se puede usar para cualquier proyecto. Las rutas de acceso de archivo se pueden especificar de dos maneras:
1. Relativo a dcproj. Por ejemplo, <DockerComposeProjectsToIgnore> path\to\AngularProject1.csproj </DockerComposeProjectsToIgnore>.
2. Rutas absolutas.
Nota: las rutas de acceso deben estar separadas por el carácter delimitador ;.
DockerComposeUpArguments Especifica los parámetros adicionales que se van a pasar al comando docker-compose up. Por ejemplo, --timeout 500.
DockerDevelopmentMode Controla si el proyecto de usuario está integrado en el contenedor. Los valores permitidos de Fast o control Regularqué fases se compilan en un Dockerfile. La configuración de depuración es el modo Rápido de forma predeterminada y el modo Normal de lo contrario.

Valor predeterminado: Rápido
DockerLaunchAction Especifica la acción de inicio que se va a realizar en F5 o Ctrl+F5. Los valores permitidos son None, LaunchBrowser y LaunchWCFTestClient.

Valor predeterminado: None
DockerLaunchBrowser Indica si se va a iniciar el explorador. Se omite si se especifica DockerLaunchAction.

Valor predeterminado: False
DockerServiceName Si se especifica DockerLaunchAction o DockerLaunchBrowser, DockerServiceName especifica qué servicio se hace referencia en el archivo docker-compose se inicia.
DockerServiceUrl Dirección URL que se va a usar al iniciar el explorador. Los tokens de reemplazo válidos son "{ServiceIPAddress}", "{ServicePort}" y "{Scheme}". Por ejemplo: {Scheme}://{ServiceIPAddress}:{ServicePort}
DockerTargetOS Sistema operativo de destino que se usa al compilar la imagen de Docker.

Además, la propiedad DockerComposeProjectPath en un archivo de proyecto de .csproj o .vbproj especifica la ruta de acceso relativa al archivo del proyecto docker Compose (.dcproj). Establezca esta propiedad al publicar el proyecto de servicio para buscar la configuración de compilación de imágenes asociada almacenada en el archivo docker-compose.yml.

Ejemplo

Si cambia la ubicación de los archivos de docker-compose, estableciendo DockerComposeBaseFilePath en una ruta de acceso relativa, también debe asegurarse de que se cambia el contexto de compilación para que haga referencia a la carpeta de la solución. Por ejemplo, si el archivo docker-compose es una carpeta denominada DockerComposeFiles, el archivo docker Compose debe establecer el contexto de compilación en ".." o ".. /..", dependiendo de dónde se refiere a la carpeta de la solución.

<?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>

El archivo mydockercompose.yml debe tener este aspecto, con el contexto de compilación establecido en la ruta de acceso relativa de la carpeta de solución (en este caso, ..).

version: '3.4'

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

Nota

DockerComposeBuildArguments, DockerComposeDownArguments y DockerComposeUpArguments son nuevos en Visual Studio 2019, versión 16.3.

Invalidación de la configuración de Docker Compose de Visual Studio

Normalmente, docker-compose.override.yml se usa para invalidar ciertas configuraciones en docker-compose.yml. Además, Visual Studio genera archivos de invalidación docker-compose.vs.debug.g.yml (para modo fast) y docker-compose.vs.release.g.yml (para modo de normal) con la configuración específica para ejecutar la aplicación dentro de Visual Studio. Puede invalidar esta configuración de Visual Studio colocando un archivo denominado docker-compose.vs.debug.yml (para modo fast) o docker-compose.vs.release.yml (para modo de regular) en el mismo directorio que el archivo de docker-compose.yml. Haga clic con el botón derecho en el proyecto de Docker Compose y seleccione Abrir carpeta en el Explorador de archivos y, a continuación, use Agregar>elemento existente para agregar el archivo al proyecto de Docker Compose.

Propina

Para averiguar los valores predeterminados de cualquiera de las configuraciones de Visual Studio, busque en el directorio de salida intermedio (por ejemplo, obj/Docker) para docker-compose.vs.debug.g.yml o docker-compose.vs.release.g.yml. Visual Studio genera estos archivos y no se debe modificar.

Etiquetas de archivo de Docker Compose

En docker-compose.vs.debug.yml o docker-compose.vs.release.yml, puede definir etiquetas específicas de invalidación de la siguiente manera:

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

Use comillas dobles alrededor de los valores, como en el ejemplo anterior, y use la barra diagonal inversa como carácter de escape para barras diagonales inversas en las rutas de acceso.

Nombre de etiqueta Descripción
com.microsoft.visualstudio.debuggee.program El programa se inició al iniciar la depuración. En el caso de las aplicaciones de .NET Core, esta configuración suele ser dotnet.
com.microsoft.visualstudio.debuggee.arguments Argumentos pasados al programa al iniciar la depuración. En el caso de las aplicaciones de .NET Core, estos argumentos suelen ser rutas de búsqueda adicionales para paquetes NuGet seguidos de la ruta de acceso al ensamblado de salida del proyecto.
com.microsoft.visualstudio.debuggee.workingdirectory Directorio que se usa como directorio inicial al iniciar la depuración. Esta configuración suele ser /app para contenedores de Linux o C:\app para contenedores de Windows.
com.microsoft.visualstudio.debuggee.killprogram Este comando se usa para detener el programa depurado que se ejecuta dentro del contenedor (cuando es necesario).
Nombre de etiqueta Descripción
com.microsoft.visualstudio.debuggee.program El programa se inició al iniciar la depuración. En el caso de las aplicaciones de .NET Core, esta configuración suele ser dotnet.
com.microsoft.visualstudio.debuggee.arguments Argumentos pasados al programa al iniciar la depuración. En el caso de las aplicaciones de .NET Core, estos argumentos suelen ser rutas de búsqueda adicionales para paquetes NuGet seguidos de la ruta de acceso al ensamblado de salida del proyecto.
com.microsoft.visualstudio.debuggee.workingdirectory Directorio que se usa como directorio inicial al iniciar la depuración. Esta configuración suele ser /app para contenedores de Linux o C:\app para contenedores de Windows.
com.microsoft.visualstudio.debuggee.killprogram Este comando se usa para detener el programa depurado que se ejecuta dentro del contenedor (cuando es necesario).
com.microsoft.visualstudio.debuggee.noattach.program El programa iniciado al usar Iniciar sin depurar (Ctrl+F5) en un proyecto de Azure Functions que se ejecuta en un proceso aislado . Normalmente, tanto F5 como Ctrl+F5 usan el mismo programa, pero si algún tipo de proyecto como Azure Functions en un proceso aislado requiere un programa diferente de F5, se usará.
com.microsoft.visualstudio.debuggee.noattach.arguments Los argumentos pasados al programa al usar Iniciar sin depurar (Ctrl+F5) en un proyecto de Azure Functions que se ejecuta en un proceso aislado.
com.microsoft.visual-studio.project-name El nombre del proyecto, que ayuda a Visual Studio a encontrar el proyecto si el proyecto no está en la misma carpeta que el Dockerfile.

Personalización del proceso de compilación de Docker

Puede declarar qué fase se va a compilar en el Dockerfile mediante la configuración de target en la propiedad build. Esta invalidación solo se puede usar en el docker-compose.vs.debug.yml o docker-compose.vs.release.yml

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

Personalización del proceso de inicio de la aplicación

Puede ejecutar un comando o un script personalizado antes de iniciar la aplicación mediante la configuración de entrypoint y hacer que dependa de la DockerDevelopmentMode. Por ejemplo, si necesita configurar un certificado solo en modo fast ejecutando update-ca-certificates, pero no en modo de normal, podría agregar el código siguiente en solodocker-compose.vs.debug.yml:

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

Para obtener más información, consulte punto de entrada contenedor

Pasos siguientes

Para obtener información sobre las propiedades de MSBuild generalmente, consulte propiedades de MSBuild.

Consulte también

propiedades de compilación de Container Tools

configuración de inicio de las herramientas de contenedor

Administrar perfiles de inicio para Docker Compose en Visual Studio

propiedades reservadas y conocidas de MSBuild