【问题标题】:When, where and how does Visual Studio 2017 set the DOCKER_BUILD_SOURCE environment variableVisual Studio 2017 何时、何地以及如何设置 DOCKER_BUILD_SOURCE 环境变量
【发布时间】:2017-08-06 17:45:37
【问题描述】:

在 Visual Studio 2017 中创建具有 docker 支持的新 .NET 核心应用程序时,它会创建许多 docker-compose.yml 文件。 docker-compose.vs.debug.yml 和发布变体都包含对名为 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.

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

【问题讨论】:

  • 在 VS2017 更新停止设置该值之前,我的 docker 构建工作正常。

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


【解决方案1】:

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

Dockerfile:

来自 microsoft/aspnetcore:1.0

ARG来源

WORKDIR /app

曝光 80

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

入口点 ["dotnet", "app.dll"]

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

【讨论】:

    【解决方案2】:

    这对构建开发映像没有实际影响。正如 Nick 解释的那样,我们使用绑定挂载获取代码。

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

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 2011-03-04
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      相关资源
      最近更新 更多