Docker配置找不到现有文件?
Posted
技术标签:
【中文标题】Docker配置找不到现有文件?【英文标题】:Docker configuration does not find existing file? 【发布时间】:2021-01-08 18:57:37 【问题描述】:我尝试在 IntelliJ Rider 中配置和运行一个 docker 文件。
在构建过程中,我收到以下错误:
Step 7/17 : COPY ["src/No.Services/No.Gf/No.Gf.Api/No.Gf.Api.csproj",
"src/No.Services/No.Gf/No.Gf.Api/"]
Error response from daemon: COPY failed: file not found in build context or excluded by .dockerignore:
stat src\No.Services\No.Gf\No.Gf.Api\No.Gf.Api.csproj: file does not exist
文件就在路径指向的位置。它没有被排除在 .dockerignore 中。
我在这里没有选择?
第 6 步是:
Step 6/17 : WORKDIR /src
也许这会增加一个“/src”,并且在第 7 步中它最终会在 /src/src/...中查找文件?
【问题讨论】:
【参考方案1】:我不知道你的物理目录层次结构,但我想说错误的原因可能是Dockerfile
和csproj
之间的原始相对路径。将csproj
位置声明为src/No.Services/No.Gf/...
,Dockerfile
必须与src
文件夹处于同一级别,才能成功复制。
您能验证一下吗?
(如果您在项目顶部使用典型的dotnet
解决方案,在解决方案的根目录中设置Dockerfile
可能会解决您的错误,因为它会尊重文件夹的层次结构。)
关于其他主题:
WORKDIR
命令指的是容器中的工作目录(reference),所以,我想说这不是你错误的原因,因为似乎在复制时,找不到文件在它的源代码中。
复制到容器成功后,大概会在src/src/No.Services/No.Gf/...
这样的目录下,但这是复制后,在容器内。
【讨论】:
谢谢,就是这样。我误解了上下文文件夹设置。只需将其设置为“。”。以上是关于Docker配置找不到现有文件?的主要内容,如果未能解决你的问题,请参考以下文章
当路径正确时,为啥 NSFIleManager -fileExistsAtPath 找不到现有文件?