Docker build无法找到父目录中的myapi.sln文件如何解决?
错误根因
该报错由Docker构建上下文的访问限制导致:
- 执行
docker build web.api/时,末尾传入的web.api/就是构建上下文目录,Docker构建全程仅允许读取该目录内的文件,无法访问上级目录的资源 - 你的
myapi.sln存放在web.api的上级目录,不在构建上下文的可访问范围内,因此无论在Dockerfile中如何调整相对路径都无法找到该文件
修复方案
方案1:修改构建命令(推荐)
无需调整现有文件结构,在myapi父目录下执行如下构建命令即可:
docker build -f web.api/Dockerfile .
命令中末尾的.代表将当前父目录设为构建上下文,-f参数指定Dockerfile的存放路径,原有Dockerfile中的COPY ./myapi.sln .无需修改即可正常运行。
方案2:调整文件位置
如果你不想修改构建命令,直接将myapi.sln移动到web.api目录下,原有COPY myapi.sln .的写法即可生效。
提示:Dockerfile中COPY指令的源路径是相对于构建上下文目录的相对路径,不是相对于Dockerfile存放目录的路径,这是常见的理解误区。
内容的提问来源于stack exchange,提问作者u314
相关产品推荐
相关产品推荐

