Dockerfile COPY {source:-...}

32

当你在 Visual Studio 2017 中创建一个支持 Docker 的项目时,Dockerfile 文件会包含以下行:

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

这是什么意思?源宏指向哪里?破折号的含义是什么?

1个回答

22

这被称为变量替换

在英语中,翻译成这样:
"嘿 Docker,在构建时,将你找到的$source变量中的路径COPY到映像中的当前目录(.)中。如果$source为空或不存在,则使用默认路径obj/Docker/publish"

$source是在执行docker build之前定义的环境变量。

一些参考资料:


3
当我尝试从命令行构建时,我遇到了这个问题:lstat obj/Docker/publish: no such file or directory。我是从 VS 构建窗口复制的命令,因此命令本身应该是正确的。 - Deqing
1
因为“source”变量是在构建时由Visual Studio传递的,所以它无法从命令行工作。 - Hasan
2
这在 Visual Studio 中对我来说很好用,但路径中的 publish 部分不存在,所以我对它的实际工作原理感到困惑。有人能分享一些见解吗? - Mike Frank
如果您查看“容器工具”的输出,可以看到--build-arg“source=obj \ Docker \ empty”,因此似乎Docker文件中的内容是备用的。 - Derek Beattie
在我的看法中,在调试模式下,intepub\wwwroot 通过卷映射到主机上的实际源目录(传递 \empty)。但是当您发布时,它可能会将实际文件复制到容器中(速度较慢)。 - Co-der
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接