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】:

我不知道你的物理目录层次结构,但我想说错误的原因可能是Dockerfilecsproj 之间的原始相对路径。将csproj 位置声明为src/No.Services/No.Gf/...Dockerfile 必须与src 文件夹处于同一级别,才能成功复制。

您能验证一下吗?

(如果您在项目顶部使用典型的dotnet 解决方案,在解决方案的根目录中设置Dockerfile 可能会解决您的错误,因为它会尊重文件夹的层次结构。)

关于其他主题:

WORKDIR 命令指的是容器中的工作目录(reference),所以,我想说这不是你错误的原因,因为似乎在复制时,找不到文件在它的源代码中。

复制到容器成功后,大概会在src/src/No.Services/No.Gf/...这样的目录下,但这是复制后,在容器内。

【讨论】:

谢谢,就是这样。我误解了上下文文件夹设置。只需将其设置为“。”。

以上是关于Docker配置找不到现有文件?的主要内容,如果未能解决你的问题,请参考以下文章

导入现有 .jsx 文件时“找不到模块的声明文件”

当路径正确时,为啥 NSFIleManager -fileExistsAtPath 找不到现有文件?

在密钥链中找不到与此配置文件匹配的有效签名身份

java.lang.IllegalStateException:找不到有效的 Docker 环境。请查看日志并检查配置

在现有文件上设置属性时出现错误“找不到路径的一部分”

尝试在 macOS 上启动现有项目时出现“找不到 ApplicationHost.cs 文件”