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). |
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