在Docker映像创建过程中,如何从npm安装过程中排除@angular/cli?
我正在启动一个使用Angular.js和Node.js的项目,它将位于Docker容器中。在我的在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
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。。。。