Docker Angular run-scripts проблема - PullRequest
0 голосов
/ 24 мая 2019

My Dockerfile для приложения Angular

FROM node:10.15.3-alpine as builder

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

RUN apk add git
COPY package*.json /usr/src/app/
RUN npm i

COPY . /usr/src/app

RUN npm run-script build

Он выходит на последнем шаге со следующей ошибкой:

npm ERR! missing script: build

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-05-24T09_05_54_385Z-debug.log

В этом случае отсутствует сценарий выполнения или опция сборки?и как исправить или что альтернатива ??

script-section из package.json

"scripts": {
    "ng": "ng",
    "edu-start": "ng serve --project edu-app",
    "edu-start-with-api": "ng serve --project edu-app --configuration local_api",
    "edu-start-with-nodejs": "ng serve --project edu-app --configuration local_nodejs",
    "edu-build-dev": "node --max_old_space_size=2048 ./node_modules/@angular/cli/bin/ng build --project edu-app --configuration hmr",
    "edu-build-prod": "node --max_old_space_size=2048 ./node_modules/@angular/cli/bin/ng build --project edu-app --configuration production --prod",
    "air-pilot-start": "ng serve --project air-pilot-app",
    "air-pilot-build-dev": "node --max_old_space_size=2048 ./node_modules/@angular/cli/bin/ng build --project air-pilot-app --configuration hmr",
    "air-pilot-build-prod": "node --max_old_space_size=2048 ./node_modules/@angular/cli/bin/ng build --project air-pilot-app --configuration production --prod",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "bundle-report": "webpack-bundle-analyzer dist/stats.json"
  },

Я тоже пробовал это вместо этого, но ни сработало, жалуется, чтонг Не найдено

RUN ng build --prod --project edu-app

1 Ответ

2 голосов
/ 24 мая 2019

В разделе скриптов нет команды build, поэтому вы получаете missing script: build.

Так что добавьте это к package.json:

    "scripts": {
       "build": "ng build --prod --project edu-app"
      }

Что касается этой и ng не найденной проблемы, о которой вы сообщаете, это нормально, поскольку @angular/cli не был установлен глобально в контейнере. У вас есть два варианта здесь,

  • либо установить его глобально npm -i -g @angular/cli
  • или получить доступ к нему напрямую через его путь внутри node_modules

Я рекомендую первое решение, поскольку оно более ясное.

Итак, после внесения изменений в раздел сценариев, о котором я говорил выше, ваш Dockerfile должен быть:

FROM node:10.15.3-alpine as builder

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

RUN apk add git
COPY package*.json /usr/src/app/
RUN npm i

COPY . /usr/src/app

RUN npm -i -g @angular/cli && npm run-script build
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...