我正在尝试在 docker 文件中运行我的 Angular 应用程序(使用 ng-cli 生成)。
这是我的 docker 文件:
FROM node:6.10.0
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install --dev && npm cache clean
COPY . /usr/src/app
CMD [ "ng", "serve" ]
然而,这会因命令而崩溃:
ng: command not found
这怎么可能? Angular CLI 列在我的 package.json 的开发依赖项中。
"devDependencies": {
"@angular/cli": "1.4.4",
"@angular/compiler-cli": "^4.2.4",
"@angular/language-service": "^4.2.4",
"@types/jasmine": "~2.5.53",
"@types/jasminewd2": "~2.0.2",
"@types/node": "~6.0.60",
"codelyzer": "~3.2.0",
...
最佳答案
问题是在您的 $PATH
变量中找不到命令 ng
。当您运行 npm install --dev
时,它将在您的项目范围内安装您的依赖项。
通过 package.json 中的 scripts
属性调用的命令将能够找到您的本地依赖项。
示例 package.json:
{
"name": "example-package",
"version": "1.0.0",
"description": "Example package that starts ng",
"scripts": {
"start": "ng serve"
},
"author": "",
"license": "ISC",
"devDependencies": {
...
}
}
docker 文件:
FROM node:6.10.0
RUN mkdir -p /usr/src/app WORKDIR /usr/src/app
COPY package.json /usr/src/app/ RUN npm install --dev && npm cache clean
COPY . /usr/src/app
CMD [ "npm", "start" ]
请注意,npm 仅支持少数开箱即用的脚本。如果你想运行任意脚本,你可以使用 npm run-script ...
命令。
...
"scripts" : {
"ng-serve": "ng serve"
}
...
通过调用运行脚本:npm run-script ng-serve
您可以在此处的 npm 文档中找到默认脚本的完整列表和更多信息:https://docs.npmjs.com/misc/scripts
关于angular - angular-cli 应用程序的 Dockerfile 返回 ng : command not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47111278/