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

Mau*_*ers 27 environment-variables docker 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.
Run Code Online (Sandbox Code Playgroud)

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

小智 1

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

Dockerfile:

来自微软/aspnetcore:1.0

ARG源

工作目录/应用程序

曝光 80

复制 ${source:-obj/Docker/publish} 。

ENTRYPOINT [“dotnet”,“app.dll”]

然而对我来说,我实际上没有看到该文件夹​​或其中的任何内容。“魔法”发生的地方是在卷部分。这实际上将您的代码作为绑定堆移动到容器上。这是您的代码被移动到容器中的地方。还有一些其他事情发生,但我不清楚,因为我在构建输出中看到一行代码被构建/发布,但不是正在运行的实际命令。