我正在尝试在docker文件中运行我的Angular应用程序(使用ng-cli生成)。
这是我的泊坞文件:
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:找不到命令
这怎么可能? 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",
...
答案 0 :(得分:1)
问题是在ng
变量中找不到命令$PATH
。当您运行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": {
...
}
}
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文档中找到默认脚本的完整列表和更多信息:https://docs.npmjs.com/misc/scripts