Propiedades de compilación de Docker Compose
Además de las propiedades que controlan los proyectos individuales de Docker, descritas en Propiedades de compilación de las herramientas de contenedor, también puede personalizar el modo en que Visual Studio compila los proyectos de Docker Compose si configura las propiedades de Docker Compose que MSBuild usa para compilar la solución. También puede controlar el modo en que el depurador de Visual Studio ejecuta las aplicaciones de Docker Compose estableciendo etiquetas de archivo en los archivos de configuración de Docker Compose.
Cómo establecer las propiedades de MSBuild
Para establecer el valor de una propiedad, edite el archivo del proyecto. En el caso de las propiedades de Docker Compose, este archivo de proyecto es el que tiene una .dcproj
extensión, a menos que se indique lo contrario en la tabla de la sección siguiente. Por ejemplo, supongamos que desea especificar que se inicie el explorador al iniciar la depuración. Puede establecer la DockerLaunchAction
propiedad en el archivo del .dcproj
proyecto como se indica a continuación.
<PropertyGroup>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>
Puede agregar el valor de la propiedad a un elemento PropertyGroup
existente o, si no hay ninguno, 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.
Nombre de la propiedad | Ubicación | Descripción | Valor predeterminado |
---|---|---|---|
AdditionalComposeFilePaths | dcproj | Esta opción permite especificar archivos de composición adicionales en una lista delimitada por signos de punto y coma que se envía a docker-compose.exe para todos los comandos. Se permiten rutas de acceso relativas desde el archivo de proyecto de Docker Compose (dcproj). | - |
DockerComposeBaseFilePath | dcproj | Especifica la primera parte de los nombres de archivo de los archivos de Docker Compose, sin la .yml extensión . Por ejemplo: 1. DockerComposeBaseFilePath = null/undefined: use la ruta docker-compose de acceso del archivo base 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 se subirán un nivel. |
docker-compose |
DockerComposeBuildArguments | dcproj | Especifica los parámetros adicionales que se van a pasar al comando docker-compose build . Por ejemplo, --parallel --pull . |
|
DockerComposeDownArguments | dcproj | Especifica los parámetros adicionales que se van a pasar al comando docker-compose down . Por ejemplo: --timeout 500 . |
- |
DockerComposeEnvFilePath | dcproj | Ruta de acceso relativa a un archivo .env que se pasa a docker compose los comandos a través de --env-file . Consulte Uso del atributo env_file. |
Empty |
DockerComposeProjectName | dcproj | Si se especifica, invalida el nombre del proyecto para un proyecto de Docker Compose. | "dockercompose" + hash generado automáticamente |
DockerComposeProjectPath | csproj o vbproj | Ruta de acceso relativa al archivo de proyecto de Docker Compose (dcproj). Establezca esta propiedad al publicar el proyecto de servicio para buscar la configuración de compilación de la imagen asociada que se almacena en el archivo docker-compose.yml. | - |
DockerComposeProjectsToIgnore | dcproj | 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 al archivo se pueden especificar de una de estas dos maneras: 1. En relación con dcproj. Por ejemplo, <DockerComposeProjectsToIgnore>path\to\AngularProject1.csproj</DockerComposeProjectsToIgnore> . 2. Rutas de acceso absolutas. Nota: las rutas de acceso deben estar separadas por el carácter delimitador ; . |
- |
DockerComposeUpArguments | dcproj | Especifica los parámetros adicionales que se van a pasar al comando docker-compose up . Por ejemplo, --timeout 500 . |
- |
DockerDevelopmentMode | dcproj | Controla si el proyecto de usuario está integrado en el contenedor. Los valores Rápido o Regular permitidos controlan qué fases están integradas en un Dockerfile. La configuración predeterminado tiene el modo rápido de forma predeterminada y, en caso contrario, el modo regular. | Rápido |
DockerLaunchAction | dcproj | Especifica la acción de inicio que se va a realizar en F5 o Ctrl+F5. Los valores permitidos son None, LaunchBrowser y LaunchWCFTestClient. | None |
DockerLaunchBrowser | dcproj | Indica si se va a iniciar el explorador. Se omite si se especifica DockerLaunchAction. | False |
DockerServiceName | dcproj | Si se especifica DockerLaunchAction o DockerLaunchBrowser, DockerServiceName especifica el servicio al que se hace referencia en el docker-compose archivo. |
- |
DockerServiceUrl | dcproj | Esta dirección URL se usa al iniciar el explorador. Los tokens de reemplazo válidos son "{ServiceIPAddress}", "{ServicePort}" y "{Scheme}". Por ejemplo: {Scheme}://{ServiceIPAddress}:{ServicePort} | - |
DockerTargetOS | dcproj | El sistema operativo de destino que se usa al compilar la imagen de Docker. | - |
Ejemplo
Si cambia la ubicación de los docker-compose
archivos, 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 docker-compose
archivo 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 un aspecto similar al siguiente, además de tener el contexto de compilación establecido en la ruta de acceso relativa de la carpeta de la 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 en Visual Studio
Habitualmente, docker-compose.override.yml se usa para invalidar determinados ajustes de docker-compose.yml. Además, Visual Studio genera archivos de invalidación docker-compose.vs.debug.g.yml (para el modo rápido ) y docker-compose.vs.release.g.yml archivos (para el modo normal ) con la configuración específica para ejecutar la aplicación dentro de Visual Studio. Puede invalidar estos ajustes de Visual Studio si coloca un archivo denominado docker-compose.vs.debug.yml (para el modo Rápido) o docker-compose.vs.release.yml (para el modo Normal) en el mismo directorio que su archivo docker-compose.yml. Haga clic con el botón derecho en el proyecto de Docker Compose y seleccione Abrir carpeta en Explorador de archivos y, después, use Agregar>elemento existente para agregar el archivo al proyecto de Docker Compose.
Sugerencia
Para averiguar los valores predeterminados de cualquiera de las opciones de configuración de Visual Studio, consulte el directorio de salida intermedia (por ejemplo, obj/Docker) para docker-compose.vs.debug.g.yml o docker-compose.vs.release.g.yml. Estos archivos se generan mediante Visual Studio y no se deben 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 como se muestra a continuación:
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 las barras diagonales inversas en las rutas de acceso.
Un nombre de etiqueta | Descripción |
---|---|
com.microsoft.visualstudio.debuggee.program | El programa que se inicia al iniciar la depuración. En el caso de las aplicaciones de .NET Core, este valor suele ser dotnet. |
com.microsoft.visualstudio.debuggee.arguments | Los argumentos que se pasan al programa al iniciar la depuración. En el caso de las aplicaciones de .NET Core, estos argumentos normalmente son rutas de búsqueda adicionales para los paquetes NuGet, seguidas de la ruta de acceso al ensamblado de salida del proyecto. |
com.microsoft.visualstudio.debuggee.workingdirectory | El directorio que se usa como directorio de inicio al iniciar la depuración. Este valor suele ser /app para los contenedores de Linux o C:\app para los contenedores de Windows. |
com.microsoft.visualstudio.debuggee.killprogram | Este comando se usa para detener el programa de depurado que se ejecuta dentro del contenedor (si es necesario). |
Un nombre de etiqueta | Descripción |
---|---|
com.microsoft.visualstudio.debuggee.program | El programa que se inicia al iniciar la depuración. En el caso de las aplicaciones de .NET Core, este valor suele ser dotnet. |
com.microsoft.visualstudio.debuggee.arguments | Los argumentos que se pasan al programa al iniciar la depuración. En el caso de las aplicaciones de .NET Core, estos argumentos normalmente son rutas de búsqueda adicionales para los paquetes NuGet, seguidas de la ruta de acceso al ensamblado de salida del proyecto. |
com.microsoft.visualstudio.debuggee.workingdirectory | El directorio que se usa como directorio de inicio al iniciar la depuración. Este valor suele ser /app para los contenedores de Linux o C:\app para los contenedores de Windows. |
com.microsoft.visualstudio.debuggee.killprogram | Este comando se usa para detener el programa de depurado que se ejecuta dentro del contenedor (si 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 utilizan el mismo programa, pero si algún tipo de proyecto como Azure Functions en un proceso aislado requiere un programa diferente a F5, se utilizará este. |
com.microsoft.visualstudio.debuggee.noattach.arguments | Los argumentos pasados al programa cuando se usa Start 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 opción target
en la propiedad build
. Esta invalidación solo se puede usar en 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 el valor entrypoint
y hacer que dependa de DockerDevelopmentMode
. Por ejemplo, si tiene que configurar un certificado solo en modo Rápido mediante la ejecución de update-ca-certificates
, pero no en modo Regular, podría agregar el código siguiente solo en docker-compose.vs.debug.yml:
services:
webapplication1:
entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
labels:
...
Para más información, consulte Punto de entrada del contenedor.
Pasos siguientes
Para obtener información sobre las propiedades de MSBuild en general, vea Propiedades de MSBuild.
Vea también
Propiedades de compilación de las herramientas de contenedor
Configuración de inicio de las herramientas de contenedor
Administración de perfiles de inicio para Docker Compose en Visual Studio