问题描述
我尝试在 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/... 中查找文件?
解决方法
我不知道您的物理目录层次结构,但我想说错误的原因可能是 Dockerfile
和 csproj
之间的原始相对路径。如果 csproj
位置声明为 src/No.Services/No.Gf/...
,Dockerfile
必须与该 src
文件夹位于同一级别,才能成功复制。
你能验证一下吗?
(如果您在项目顶部使用典型的 dotnet
解决方案,则在解决方案的根目录中设置 Dockerfile
可能会解决您的错误,因为它会尊重文件夹的层次结构。 )
关于其他主题:
-
WORKDIR
命令指的是容器中的工作目录 (reference),因此,我会说这不是您出错的原因,因为看起来,当正在复制,在其源中找不到该文件。 -
复制到容器中成功后,它可能会在
src/src/No.Services/No.Gf/...
这样的目录中,但这是复制后的容器内。