用于angular-cli应用程序的Dockerfile返回ng:command not found
我试图运行我的Angular应用程序(用ng-cli生成)在docker文件中。
这是我的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:命令未find
这怎么可能? 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
variables中找不到命令ng
。 当你运行npm install --dev
它会在你的项目范围内安装你的依赖关系。
通过您的package.json中的scripts
属性调用的命令将能够find您的本地依赖项。
示例package.json:
{ "name": "example-package", "version": "1.0.0", "description": "Example package that starts ng", "scripts": { "start": "ng serve" }, "author": "", "license": "ISC", "devDependencies": { ... } }
Dockerfile:
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文档中find默认脚本和更多信息的完整列表: https ://docs.npmjs.com/misc/scripts