angular - angular-cli 应用程序的 Dockerfile 返回 ng : command not found

标签 angular docker angular-cli

我正在尝试在 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/

相关文章:

javascript - Angular 2.1.0 动态创建子组件

angular - Karma DEBUG RUNNER 中没有 Angular 源映射

docker - docker run -e 的环境变量

node.js - 为什么我无法访问 docker 容器中的 node.js 应用程序?

angular - 保持 Angular cli 开发应用程序在服务器后台运行?

angular-cli - `ng serve`输出文件到哪里?

angular - 可以在 Angular2 中设置 http 使用的 User-Agent header 吗?

javascript - 如何在 angular2 typescript 中正确执行 "bind"?

angular - Mat-autocomplete - 如何访问选定的选项?

postgresql - Docker(组成): making knex work with postgres