Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Docker映像创建过程中,如何从npm安装过程中排除@angular/cli?_Angular_Docker_Angular Cli_Npm Install - Fatal编程技术网

在Docker映像创建过程中,如何从npm安装过程中排除@angular/cli?

在Docker映像创建过程中,如何从npm安装过程中排除@angular/cli?,angular,docker,angular-cli,npm-install,Angular,Docker,Angular Cli,Npm Install,我正在启动一个使用Angular.js和Node.js的项目,它将位于Docker容器中。在我的Dockerfile中,我已经指出Docker必须运行npm install来配置我的项目,当它将构建Docker映像时。这是生成日志的一部分: Step 4/10 : RUN npm install ---> Running in 90d567c905d4 > @angular/cli@6.0.3 postinstall /usr/src/app/node_modules/@angul

我正在启动一个使用Angular.jsNode.js的项目,它将位于Docker容器中。在我的
Dockerfile
中,我已经指出Docker必须
运行npm install
来配置我的项目,当它将构建Docker映像时。这是生成日志的一部分:

Step 4/10 : RUN npm install
---> Running in 90d567c905d4

> @angular/cli@6.0.3 postinstall /usr/src/app/node_modules/@angular/cli
> node ./bin/ng-update-message.js

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})    

added 295 packages in 12.979s
我已经在我的操作系统中安装了带有npm的
@angular/cli
软件包,我不想在Docker
运行npm安装时在我的项目中安装
@angular/cli
,这会加重我的Docker形象

在Docker映像创建过程中,如何从npm安装过程中排除@angular/cli?

要解决此问题,我在我的
Dockerfile
中使用此代码:

RUN npm uninstall @angular/cli

但这并没有解决我的问题。你能给我什么建议?

其中一条评论谈到运行
ng build
,然后使用Dockerfile中的
dist
文件夹。这是一个可以在构建中轻松自动化的步骤

这是利用Docker技术的绝佳机会

您将希望Dockerfile的外观如下所示:

FROM node:7.9 as build

WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app/      # or wherever your source code is found
RUN ng-build
以下是多阶段部分:

FROM nginx:alpine  # or whatever image you want here
COPY --from=build /app/dist/ /usr/share/nginx/html/

现在您有了一个漂亮的小图像,只有
dist
目录,并且没有在最终容器中运行
ng build
npm install
所产生的不必要的开销。

其中一条评论谈到运行
ng build
,然后使用Dockerfile中的
dist
文件夹。这是一个可以在构建中轻松自动化的步骤

这是利用Docker技术的绝佳机会

您将希望Dockerfile的外观如下所示:

FROM node:7.9 as build

WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app/      # or wherever your source code is found
RUN ng-build
以下是多阶段部分:

FROM nginx:alpine  # or whatever image you want here
COPY --from=build /app/dist/ /usr/share/nginx/html/

现在您有了一个漂亮的小图像,只有
dist
目录,在您的最终容器中运行
ng build
npm install
不会产生不必要的开销。

我使用它来启动Angular.js项目的结构。您是否建议我不需要
@Angular/cli
包来创建我的项目?而且,您所描述的内容也没有多大意义。您希望使用Angular cli构建应用程序,但不希望Angular cli成为安装应用程序的docker映像的一部分?这不是问题,问题是我已经安装了该软件包,当docker
运行npm install
时,它会自动安装在我的项目中,我不希望发生这种情况。您可以使用
ng build
,然后将
dist
文件夹的内容复制到您的docker中……我使用它来启动Angular.js项目的结构。您是否建议我不需要
@Angular/cli
包来创建我的项目?而且,您所描述的也没有多大意义。您希望使用Angular cli构建应用程序,但不希望Angular cli成为安装应用程序的docker映像的一部分?这不是问题,问题是我已经安装了该软件包,当docker
运行npm install
时,它会自动安装在我的项目中,我不希望发生这种情况。您可以使用
ng build
,然后将
dist
文件夹的内容复制到您的docker。。。。