使用docker-compose部署时报failed to compute cache key错误如何解决
错误原因
核心问题为docker-compose.yml中配置的构建上下文(context)路径与实际代码目录不匹配:
- 你为backend服务设置的
build.context值为./docker,Docker构建时会以该目录作为根路径查找所有COPY操作的源文件 - 你的
backend代码目录和docker-compose.yml同级,并不在./docker目录下,因此Dockerfile中所有COPY backend/xxx的操作都无法找到对应文件,触发路径不存在报错 - 之前单独执行docker build、docker run正常,是因为你当时执行命令的路径为项目根目录,默认上下文为当前目录,可以正常找到backend目录
解决方法
两种方案任选其一即可,更推荐第一种:
方案1:修改docker-compose.yml的context配置
保持Dockerfile不变,将构建上下文调整为项目根目录,同时修改dockerfile的相对路径:
version: "3" services: backend: build: context: ./ dockerfile: docker/Dockerfile.backend container_name: backend ports: - '8081:8081' links: - mongodb mongodb: container_name: mongodb image: mongo ports: - '27017:27017'
修改后重新执行docker-compose up --build即可正常构建。
方案2:修改Dockerfile.backend的COPY路径
如果不想调整docker-compose的context配置,可将Dockerfile中所有COPY的源路径调整为相对./docker目录的上层路径:
# 仅需修改builder阶段COPY指令的源路径,其余内容保持不变 FROM node:14-alpine AS builder WORKDIR /app COPY ../backend/package.json ../backend/package-lock.json ./ RUN npm install COPY ../backend/src/ ./src COPY ../backend/.env ./ COPY ../backend/.babelrc ./ # 后续构建逻辑无需改动
该方案存在Docker禁止访问上下文外路径的风险,稳定性低于方案1。
内容的提问来源于stack exchange,提问作者MadTik
相关产品推荐
相关产品推荐

