You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:39:04