Tengo un archivo acoplable para un proyecto de .NET Core que hace referencia a algunos proyectos de biblioteca en la misma solución.
Dado que Docker no permite copiar archivos desde fuera del directorio principal (Docker: agregar un archivo desde un directorio principal ), debo mantener mi Dockerfile fuera del directorio del proyecto ejecutable (inicio).
Entonces, ¿cómo uso la depuración de Visual Studio con un Dockerfile que no se encuentra dentro del proyecto ejecutable?
Parece que Visual Studio solo funciona con el perfil de depuración de Docker si puede encontrar un Dockerfile en el directorio del proyecto de inicio.
Cuando el Dockerfile no está presente en el directorio de inicio, el error de compilación apunta a líneas en un archivo llamado Container.targets, ubicado en:
C:\Users<user>\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.4.10\build
<Target Name="ContainerPrepareForLaunch" Condition="Exists('$(ContainerSemaphoreFilePath)')"> <PrepareForLaunch DevelopmentMode="$(ContainerDevelopmentMode)" DevEnvDir="$(DevEnvDir)" Dockerfiles="@(_Dockerfile)" IntermediateOutputPath="$(ContainerIntermediateOutputPath)" ProjectCapability="@(ProjectCapability)" ProjectFilePath="$(MSBuildProjectFullPath)" NuGetPackageFolders="$(NuGetPackageFolders)" NuGetPackageRoot="$(NuGetPackageRoot)" TargetFrameworkWithVersion ="$(TargetFramework)" TargetPath="$(TargetPath)" ErrorLogFilePath="$(ContainerSemaphoreFilePath)" DockerLabelBuiltImages="$(DockerLabelBuiltImages)" DockerImageLabel="$(DockerImageLabel)" ProjectTypeGuids="$(ProjectTypeGuids)" /> </Target>Sin embargo, necesito poder administrar la ruta al Dockerfile por proyecto.
Para Dockerfile , solo podía acceder a los archivos en la carpeta principal. Para la depuración de Docker para VS, accederá al archivo docker en la carpeta raíz del proyecto. No se podía cambiar este comportamiento.
Como solución alternativa, puede considerar agregar docker-compose que podría especificar la ubicación del archivo docker y ejecutarlo directamente desde VS.
Docker Compose Modifique docker-compose.yml para cambiar el dockerfilepath en la variable dockerfile
version: '3.4' services: hellodockertools: image: ${DOCKER_REGISTRY}hellodockertools build: context: . dockerfile: HelloDockerTools/Dockerfile Establecer docker-compose como proyecto de inicio