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

使用GitHub Actions构建React应用Docker镜像时找不到package.json的问题

问题分析与解决方案

根因

构建失败的核心原因是Docker构建上下文(context)与Dockerfile中的文件路径不匹配:

  • GitHub Actions中指定的构建上下文是项目根目录(context: .)
  • Dockerfile位于my-app/Dockerfile,其中COPY ./package.json /my-app指令会尝试从根目录查找package.json,但实际该文件在my-app/子目录下,因此触发文件未找到的错误。

解决方案(二选一即可)

方案1:调整Dockerfile路径,适配根目录上下文

修改Dockerfile中的COPY指令,使用相对于项目根目录的路径:

# 安装依赖部分
COPY ./my-app/package.json /my-app
RUN npm install

# 复制项目文件部分
COPY ./my-app .

方案2:切换构建上下文到my-app目录,保留原Dockerfile

修改GitHub Actions中build-and-push-image步骤的context参数,将基准目录切换为my-app:

- name: Build and push Docker image 
  uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
  with:
    context: ./my-app  # 以my-app子目录作为构建上下文
    file: ./my-app/Dockerfile  # 保持Dockerfile路径不变(也可简化为Dockerfile,因上下文已切换)
    push: true
    tags: ${{ steps.meta.outputs.tags }}
    labels: ${{ steps.meta.outputs.labels }}

补充说明

Docker构建上下文是解析所有相对路径的基准目录:

  • 若上下文设为根目录,所有COPY/ADD指令的源路径需相对于根目录
  • 若上下文切换到子目录,指令中的路径则相对于该子目录,与你原Dockerfile的路径逻辑匹配

内容的提问来源于stack exchange,提问作者Niranjan godbole

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:15:48