在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.
我无法找到有关此主题的更多详细信息...有没有人有想法或指向某些文档的指针?
答案 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。