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

构建Angular Docker镜像时遇ng: Permission denied错误求解决

解决Docker构建Angular项目时ng: Permission denied错误

你在构建Angular Docker容器时遇到如下错误:

=> ERROR [6/6] RUN  npm run build --omit=dev        
0.7s
------
 > [6/6] RUN  npm run build --omit=dev:
#10 0.687
#10 0.687 > edi-tracker@0.0.0 build
#10 0.687 > ng build
#10 0.687
#10 0.695 sh: 1: ng: Permission denied 

问题核心是本地安装的Angular CLI未被正确识别,以下是几种可行的解决方法:

方案1:明确指定本地Angular CLI路径

修改项目根目录的package.json,将build脚本改为直接引用本地ng可执行文件:

"scripts": {
  "build": "./node_modules/.bin/ng build"
}

这样npm执行build命令时会直接调用本地安装的CLI,绕开PATH环境变量的问题。

方案2:在Dockerfile中临时添加PATH

在执行npm run build前,把node_modules/.bin目录加入当前会话的PATH:

### STAGE 1: Build ###
FROM node:latest AS build  
USER node
WORKDIR /usr/src/app
COPY --chown=node:node package.json package-lock.json ./
RUN npm install
COPY --chown=node:node . .
# 临时添加本地CLI路径到PATH
RUN PATH=$PATH:/usr/src/app/node_modules/.bin npm run build --omit=dev
### STAGE 2: Run ###
FROM nginx:1.17.1-alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build /usr/src/app/dist /usr/share/nginx/html

方案3:用npx调用本地CLI

修改package.json的build脚本,通过npx自动查找本地Angular CLI:

"scripts": {
  "build": "npx ng build"
}

npx会自动扫描node_modules/.bin目录,无需手动配置PATH。

方案4:确保ng可执行文件权限(可选)

如果是文件权限不足导致的错误,可在npm install后添加权限赋予命令:

RUN npm install
RUN chmod +x node_modules/.bin/ng

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:05:27