Visual Studio 2017 何时、何地以及如何设置 DOCKER_BUILD_SOURCE 环境变量
Posted
技术标签:
【中文标题】Visual Studio 2017 何时、何地以及如何设置 DOCKER_BUILD_SOURCE 环境变量【英文标题】:When, where and how does Visual Studio 2017 set the DOCKER_BUILD_SOURCE environment variable 【发布时间】: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 构建工作正常。 【参考方案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。
【讨论】:
以上是关于Visual Studio 2017 何时、何地以及如何设置 DOCKER_BUILD_SOURCE 环境变量的主要内容,如果未能解决你的问题,请参考以下文章
如何设置 TFS 2013 以使用 Visual Studio 2013 或 Visual Studio 2017 构建
如何查看greenplum函数何时、何人、何地在数据库中创建的信息?
何时何地为 caffe 调用和执行“REGISTER_SOLVER_CLASS(SGD);”?
如何使用Visual Studio 2013或Visual Studio 2017设置TFS 2013
错误 MSB3073:命令“grunt dist”在 Visual Studio 2017 中以代码 3 退出
更新 Visual Studio 2017,现在出现编译错误 C7510:“回调”:使用依赖模板名称必须以“模板”为前缀