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

Docker容器中npm run在GitLab CI与本地执行行为差异排查

问题原因与解决方案

核心原因

你遇到的sh: ember: not found错误,根源在于Docker镜像本身未包含ember命令,而Docker Compose的挂载操作掩盖了这个问题:

  • Docker Compose的挂载逻辑:你通过bind类型的卷将本地项目目录挂载到容器的/usr/app,此时容器内实际使用的是本地项目的文件和依赖(包括本地node_modules中的ember),因此npm run build能正常执行。
  • GitLab CI的运行逻辑:直接使用构建好的镜像时,镜像内只有你Dockerfile中复制的package*.json和安装的依赖。如果ember没有被声明为项目的dependencies或devDependencies,镜像安装依赖时就不会包含ember,自然找不到该命令。

解决方案

推荐采用本地依赖安装的方式,确保镜像内包含所需命令:

  1. 在本地项目中将ember-cli添加为开发依赖:
    npm install --save-dev ember-cli
    
  2. 更新项目的package-lock.json,重新构建并推送Docker镜像。
  3. 此时GitLab CI使用新镜像执行npm run build时,npm会自动从容器内/usr/app/node_modules/.bin目录中找到ember命令,正常执行构建。

如果必须使用全局安装,也可以在Dockerfile中添加全局安装步骤:

RUN npm install -g ember-cli

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:01:31