Как я могу исключить @ angular / cli из процесса npm-install в процессе создания образа Docker? - PullRequest
0 голосов
/ 20 мая 2018

Я запускаю проект, который будет использовать Angular.js и Node.js , и он будет находиться внутри контейнера Docker.В моем Dockerfile я указал, что Docker должен RUN 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

Я установил @angular/cli пакет с npm в моей ОС, и я не хочу, чтобы пакет @angular/cli был установленв моем проекте, когда Docker RUN npm install, он утяжеляет мой образ Docker.

Как я могу исключить @ angular / cli из процесса npm-install в процессе создания образа Docker?

Чтобы решить, что я использую этот код в своем Dockerfile:

RUN npm uninstall @angular/cli

Но это не решило мою проблему.Что вы можете мне предложить?

1 Ответ

0 голосов
/ 20 мая 2018

В одном из комментариев говорится о запуске ng-build и последующем использовании папки dist в вашем Dockerfile. Это шаг, который вы можете легко автоматизировать в вашей сборке

Это прекрасная возможность использовать многоступенчатые сборки 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 в вашем конечном контейнере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...