Выберите конфигурации angular.json во время многоэтапной сборки Docker - PullRequest
0 голосов
/ 17 ноября 2018

Я создаю приложение angular6 с многоэтапной сборкой докера.Файл angular.json по умолчанию, созданный angular.cli, содержит раздел сборки, включающий список конфигураций.Я могу выбрать конкретную конфигурацию, используя следующую команду

ng build --configuration production 

, но в моей многоэтапной сборке Docker я не могу использовать ng напрямую, но только npm

с помощью "npm run build" пинает "ng build"но я не знаю, как предоставить дополнительные параметры «--configuration production» для выбора конкретной конфигурации.

Это кусок моего файла angular.json

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "woa-angular6-app": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/woa-angular6-app",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.css",
              "src/entity-add.scss"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
        },
        "serve": {...

, это мойdockerfile

# Stage 1
FROM node:8.11.2-alpine as node

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

# how to supply the equivalent parameter to select a given configuration?
RUN npm run build 
#RUN ng build --configuration production

# Stage 2
FROM nginx:1.13.12-alpine

COPY --from=node /usr/src/app/dist/woa-angular6-app /usr/share/nginx/html

COPY ./nginx.conf /etc/nginx/conf.d/default.conf

1 Ответ

0 голосов
/ 18 ноября 2018

Производство сборки по умолчанию для angular

ng build --prod --build-optimizer

подробнее здесь https://angular.io/guide/deployment

Не уверен, что я понимаю, что вы пытаетесь сделать, но в пакете json вы можете создать команду запускапо вашему желанию для каждой среды, например

"scripts": {
  "build:production": "ng build --prod ... + your prod config flags here",
  "build:staging": "ng build --prod ... +  whatever flags",
  "build:dev": "ng build --prod + whatever flags",
}

Проверьте, какие опции вы можете предоставить здесь:

https://angular.io/cli/build

Затем из файла Docker вы просто

npm run build:production

Надеюсь, это поможет!

...