.net core Dockerfile副本${source:-obj/Docker/publish}升级到3.1后找不到正确的源
我正在使用Jenkins构建和部署一个.Net核心微服务应用程序。对于每个微服务,我都在构建一个docker容器。我的dockerfile中包含以下内容: 精氨酸源 复制${source:-obj/Docker/publish} 在从.NETCore2.2升级到3.1之前,这是有效的。升级后,当我尝试部署时,出现以下错误: 复制失败:stat/var/lib/docker/tmp/docker-builder609391151/obj/docker/publish:没有这样的文件或目录 脚本返回退出代码1 据我所知,它看起来像是.Net Core 2.2编译到了/obj/Docker/publish目录,但是.Net Core 3.1编译到了/bin/Release/netcoreapp3.1目录,但是源代码仍然指向/obj/Docker/publish。我试图找出源参数的定义位置,以及应该如何更改 更新: 我决定完全不使用源代码,而是硬编码构建路径。我把复印行改为 复制/var/lib/jenkins/jobs/fusion-core/branchs/master/workspace/src/CustomerAPI/obj/Release/netcoreapp3.1 当我尝试构建docker容器时,仍然会遇到一个错误 复制失败:stat/var/lib/docker/tmp/docker-builder356954794/var/lib/jenkins/jobs/fusion-core/branchs/master/workspace/src/CustomerAPI/obj/Release/netcoreapp3.1:没有这样的文件或目录 脚本返回退出代码1 我不确定“/var/lib/docker/tmp/docker-builder356954794”是从哪里来的,也不确定它为什么会附加到我路径的前面,但它不存在.net core Dockerfile副本${source:-obj/Docker/publish}升级到3.1后找不到正确的源,.net-core,dockerfile,.net Core,Dockerfile,我正在使用Jenkins构建和部署一个.Net核心微服务应用程序。对于每个微服务,我都在构建一个docker容器。我的dockerfile中包含以下内容: 精氨酸源 复制${source:-obj/Docker/publish} 在从.NETCore2.2升级到3.1之前,这是有效的。升级后,当我尝试部署时,出现以下错误: 复制失败:stat/var/lib/docker/tmp/docker-builder609391151/obj/docker/publish:没有这样的文件或目录 脚本返回
仍然不知道如何解决这个问题。一些调试建议没有明确的顺序 默认值
${source:-obj/Docker/publish}
如果定义了变量source
,则计算为变量值;如果未定义,则计算为变量obj/Docker/publish
我试图找出source
参数的定义位置,以及应该如何更改
如果找不到将其定义为另一个值的任何内容,则表示正在使用默认值obj/Docker/publish
发布目录
3.1仍然使用publish
目录,但它将位于bin/Release/netcoreapp3.1/publish
。使用运行find-type d-iname publish
查找容器中的发布目录
不要使用完整路径,它将更改每个构建。请参阅路径中的tmp/docker-builder356954794
COPY
命令根据机器中的路径(docker容器外部)使用相对文件。因此,请使用相对于上下文目录(或Dockerfile
)所在位置的路径。如果dockerfile位于/var/lib/jenkins/jobs/fusion core/branchs/master/workspace/src/CustomerAPI/dockerfile
,并且您机器上的发布目录位于/var/lib/jenkins/jobs/fusion core/branchs/master/workspace/src/CustomerAPI/bin/Release/netcoreapp3.1/publish
,则使用如下的复制
命令:
COPY bin/Release/netcoreapp3.1/publish .
有趣的路径
我不确定“/var/lib/docker/tmp/docker-builder356954794”来自哪里
容器需要将文件从一个目录(在主机中)共享到另一个目录(在容器中)。根据容器技术,它使用一个或多个文件系统或文件目录
其中之一是
/var/lib/docker/tmp/…
嗯,我现在无法测试这个问题,但我将标记您的答案为解决它,因为您回答了我的问题,并让我走上了正确的轨道。谢谢