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

执行docker compose up容器化项目时出现/app/build未找到的缓存密钥错误

容器化项目时docker compose up报错:找不到/app/build目录

执行docker compose up容器化项目时触发错误,提示/app/build目录不存在,尝试修改COPY路径为/app/install-all后问题依旧。

相关配置文件

Dockerfile

FROM node:gallium-alpine3.18 as build
WORKDIR /app
COPY package.json .
COPY package-lock.json .
RUN npm install
COPY . .
RUN npm run install-all

# Stage 2
FROM nginx
WORKDIR /usr/share/nginx/html
RUN rm -rf ./*
RUN echo ${PWD} && ls -la
COPY --from=build /app/build .
ENTRYPOINT ["nginx", "-g", "daemon off;"]

docker-compose.yml

version: '3.8'

services:
  app: 
    container_name: product_container
    image: product_image
    build:
      context: .
    ports:
      - 8000:8000

npm可用脚本

{
  "scripts": {
    "install-all": "cd server && npm i && cd .. && cd client && npm i",
    "server": "cd server && npm start",
    "server-dev": "cd server && npm run dev",
    "client-dev": "cd client && vite",
    "client-build": "cd client && vite build",
    "client-preview": "cd client && vite preview"
  }
}

错误信息

[+] Running 1/1
 ! app Warning                                                                                                                                                   4.6s 
[+] Building 15.2s (19/19) FINISHED
 => [app internal] load build definition from Dockerfile                                                                                                         0.0s
 => => transferring dockerfile: 376B                                                                                                                             0.0s
 => [app internal] load .dockerignore                                                                                                                            0.0s
 => => transferring context: 58B                                                                                                                                 0.0s
 => [app internal] load metadata for docker.io/library/nginx:latest                                                                                              3.3s
 => [app internal] load metadata for docker.io/library/node:gallium-alpine3.18                                                                                   2.5s
 => [app auth] library/node:pull token for registry-1.docker.io                                                                                                  0.0s
 => [app auth] library/nginx:pull token for registry-1.docker.io                                                                                                 0.0s
 => [app build 1/7] FROM docker.io/library/node:gallium-alpine3.18@sha256:bca38851a77922e849907c57588bdf3dfcf95725186d7c26cdfd64da730989d3                       0.0s
 => [app internal] load build context                                                                                                                           10.8s
 => => transferring context: 6.56MB                                                                                                                             10.3s
 => [app stage-1 1/5] FROM docker.io/library/nginx@sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305                                       0.0s
 => CACHED [app stage-1 2/5] WORKDIR /usr/share/nginx/html                                                                                                       0.0s
 => CACHED [app stage-1 3/5] RUN rm -rf ./*                                                                                                                      0.0s
 => CACHED [app stage-1 4/5] RUN echo ${PWD} && ls -la                                                                                                           0.0s
 => CACHED [app build 2/7] WORKDIR /app                                                                                                                          0.0s
 => CACHED [app build 3/7] COPY package.json .                                                                                                                   0.0s
 => CACHED [app build 4/7] COPY package-lock.json .                                                                                                              0.0s 
 => CACHED [app build 5/7] RUN npm install                                                                                                                       0.0s 
 => CACHED [app build 6/7] COPY . .                                                                                                                              0.0s 
 => CACHED [app build 7/7] RUN npm run install-all                                                                                                               0.0s 
 => ERROR [app stage-1 5/5] COPY --from=build /app/build .                                                                                                       0.0s 
------
 > [app stage-1 5/5] COPY --from=build /app/build .:
------
failed to solve: failed to compute cache key: failed to calculate checksum of ref a02f4bce-0632-4ac7-b1fc-91d8f44501e2::vctjyp0apfdei1qda0qpul22h: "/app/build": not found

解决方案

问题根源

  1. Dockerfile的build阶段仅执行了install-all脚本,该脚本仅完成server和client的依赖安装,并未触发前端项目的构建命令,因此/app/build目录根本不存在。
  2. 即使执行构建,client-build脚本是在client目录下执行vite build,生成的产物目录是/app/client/build,而非根目录的/app/build。
  3. docker-compose中端口映射错误,nginx默认监听80端口,当前配置的8000:8000无法正确映射。

修正步骤

  1. 修改Dockerfile,在build阶段添加前端构建命令,并修正COPY路径:
FROM node:gallium-alpine3.18 as build
WORKDIR /app
COPY package.json .
COPY package-lock.json .
RUN npm install
COPY . .
RUN npm run install-all
# 新增前端构建命令
RUN npm run client-build

# Stage 2
FROM nginx
WORKDIR /usr/share/nginx/html
RUN rm -rf ./*
COPY --from=build /app/client/build .  # 修正为client下的build目录
ENTRYPOINT ["nginx", "-g", "daemon off;"]
  1. 修正docker-compose.yml的端口映射:
version: '3.8'

services:
  app: 
    container_name: product_container
    image: product_image
    build:
      context: .
    ports:
      - 8000:80  # 映射到nginx默认的80端口
  1. 重新执行docker compose up --build,即可完成容器化构建。

内容的提问来源于stack exchange,提问作者S.Go

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:45:13