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

在k3s中通过Argo CD部署Node.js应用遇npm缺失start脚本错误

问题定位与解决方案:GitHub Actions构建的Node.js镜像部署npm start报错

问题现象

通过GitHub Actions构建的镜像在k3s服务器部署时,Argo CD报npm启动脚本缺失错误:

npm error Missing script: "start"
npm error
npm error Did you mean one of these?
npm error   npm star # Mark your favorite packages
npm error   npm stars # View packages marked as favorites
npm error
npm error To see a list of scripts, run:
npm error   npm run
npm error A complete log of this run can be found in: /root/.npm_logs/2024-05-25T20_23_24_072Z-debug-0.log

本地构建的镜像可正常部署,仅CI构建的镜像出现此问题。

原因分析

本地构建时,你大概率是在auth目录下执行docker build,此时Docker构建上下文为auth目录,Dockerfile中的COPY package.json .会正确复制auth/package.json到容器。

但GitHub Actions的构建步骤中,默认使用仓库根目录作为构建上下文,而Dockerfile路径指定为auth/Dockerfile。这会导致Dockerfile中的COPY package.json .实际复制的是仓库根目录下的package.json(若根目录无此文件,则容器内的package.json不存在或内容不符),最终容器启动时找不到start脚本。

解决方案

方案1:指定构建上下文为auth目录(推荐)

修改GitHub Actions的build-push-action步骤,添加context: auth参数,让构建上下文与本地保持一致:

- name: Build and push
  uses: docker/build-push-action@v5
  with:
    push: true
    context: auth  # 指定构建上下文为auth目录
    file: auth/Dockerfile
    tags: My-username/auth:latest
    platforms: linux/amd64

方案2:调整Dockerfile中的COPY路径

若不想修改构建上下文,可修改Dockerfile的COPY路径,从根目录的auth子目录复制文件:

FROM node:alpine

WORKDIR /app
COPY auth/package.json .
RUN npm install --only=prod
COPY auth/. .

CMD ["npm", "start"]

验证步骤

  1. 重新触发GitHub Actions构建
  2. 拉取构建后的镜像,执行docker run --rm My-username/auth npm run,确认输出中包含start脚本
  3. 通过Argo CD重新部署,验证问题解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:53:09