用于angular-cli应用程序的Dockerfile返回ng:未找到命令

时间:2017-11-04 13:29:53

标签: angular docker angular-cli

我正在尝试在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",
...

1 个答案:

答案 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