什么时候,在哪里以及如何在Visual Studio 2017中设置DOCKER_BUILD_SOURCE环境variables

在Visual Studio 2017中使用docker支持创build新的.NET核心应用程序时,它会创build一些docker-compose.yml文件。 docker-compose.vs.debug.yml和发布变体都包含对名为DOCKER_BUILD_SOURCE的环境variables的引用:

version: '2' services: app: image: app:dev build: args: source: ${DOCKER_BUILD_SOURCE} environment: - DOTNET_USE_POLLING_FILE_WATCHER=1 volumes: - ./app:/app - ~/.nuget/packages:/root/.nuget/packages:ro - ~/clrdbg:/clrdbg:ro entrypoint: tail -f /dev/null labels: - "com.microsoft.visualstudio.targetoperatingsystem=linux" The purpose of this variable seems to be a reference to the source directory, however, it always seems to be empty. 

我无法find关于这个问题的更详细的信息…有没有人有一个想法或指针,一些文档?

我相信它可以做一些可以用于Visual Studio Team Services CI / CD的设置。 但是,在本地运行时,该值为空,如果您查看docker文件,则会看到如果该值为空,则将其replace为“obj / Docker / publish”

Dockerfile:

从微软/ aspnetcore:1.0

ARG来源

WORKDIR /应用程序

EXPOSE 80

COPY $ {source:-obj / Docker / publish}。

入口点[“dotnet”,“app.dll”]

但是对于我来说,我实际上并没有看到那个文件夹或其中的任何东西。 “魔术”发生在卷部分。 基本上把你的代码作为一个绑定堆移动到容器上 。 这是你的代码被移到容器上的地方。 还有一些其他的事情我不清楚,因为我在构build输出的代码被构build/发布的地方看到一行,而不是正在运行的实际命令。

这在构build开发图像时没有真正的影响。 正如Nick所解释的,我们使用绑定安装来获取代码

这在构build用于生产用途的图像时使用,文件docker-compose.ci.build.yml输出到每个解决schemeWeb项目的obj / Docker / publish。