Visual Studio 2017何时,何地以及如何设置DOCKER_BUILD_SOURCE环境变量

时间:2017-03-15 19:30:52

标签: docker environment-variables docker-compose visual-studio-2017

在Visual Studio 2017中创建具有docker支持的新.NET核心应用程序时,它会创建许多docker-compose.yml文件。 docker-compose.vs.debug.yml和release变量都包含对名为DOCKER_BUILD_SOURCE的环境变量的引用:

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.

我无法找到有关此主题的更多详细信息...有没有人有想法或指向某些文档的指针?

2 个答案:

答案 0 :(得分:1)

我认为这与做一些可以与Visual Studio Team Services CI / CD一起使用的设置有关。但是,当在本地运行时,该值为空,如果您查看docker文件,您会看到如果该值为空,则它将替换" obj / Docker / publish"

Dockerfile:

FROM microsoft / aspnetcore:1.0

ARG来源

WORKDIR / app

EXPOSE 80

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

ENTRYPOINT [" dotnet"," app.dll"]

但是对我来说,我实际上并没有看到该文件夹​​或其中的任何内容。在哪里"魔术"发生在卷部分。这基本上将您的代码作为bind mound移动到容器上。这是您的代码移动到容器上的位置。还有其他一些事情发生在我身上并不清楚,因为我在构建输出中看到代码构建/发布的行,但不是正在运行的实际命令。

答案 1 :(得分:0)

在构建开发映像时,这没有实际影响。正如Nick解释的那样,我们使用bind mount获取代码。

在使用文件docker-compose.ci.build.yml构建生产图像时使用,该文件输出到每个解决方案Web项目的obj / Docker / publish。