Docker构建报failed to compute cache key路径不存在错误如何解决
问题原因
Docker构建时存在**上下文(Context)**限制:你执行docker build命令末尾的.代表将当前deployment目录作为构建上下文,Docker只会将该目录下的文件打包上传给Docker daemon,不允许访问上下文之外的父级目录内容。
你在Dockerfile中写的COPY ../services/ui/project1 /app/用到了父级路径../,已经跳出了deployment上下文目录的范围,Docker无法找到对应路径的文件,因此抛出找不到资源的报错。
解决方案
推荐采用调整构建上下文的方案,改动最小:
- 切换工作目录到项目根目录
project下 - 修改Dockerfile中的COPY语句,将相对路径调整为基于project根目录的路径:
# 替换原来的COPY ../services/...语句 COPY ./services/ui/project1 /app/
- 执行如下构建命令,手动指定Dockerfile的路径即可:
docker build -t website_ui -f ./deployment/Dockerfile.project1 .
额外注意事项
你当前Dockerfile中的RUN SET PORT=${PORT} && npm start存在逻辑错误:RUN指令仅在镜像构建阶段执行,写在这里会导致构建过程中直接启动前端服务,卡住构建流程。如果要指定容器启动时的默认运行命令,需要替换为CMD指令:
# 替换原来的RUN npm start语句 CMD ["sh", "-c", "PORT=${PORT} npm start"]
内容的提问来源于stack exchange,提问作者Code Guru
相关产品推荐
相关产品推荐

