npm build fails when using with Docker and Angular localize

701 views Asked by At

I am working on a relatively large project that I aim to localize. I have done everything necessary and I'm not in the process of extending the existing Docker file to enable this. However, it fails. This is the Docker File (at least to the part where it's working):

FROM node:15.11.0-alpine3.13 as builder
WORKDIR /app

COPY package*.json ./
COPY patch-webpack.js .
RUN npm ci --no-progress

RUN $(npm bin)/ng version

COPY . .
RUN npm run build

And it always fails at npm run build.

If I build the project on my local machine, it works perfectly fine. This is the error log (not very descriptive, unfortunately)

ng "build"

Warning: Using differential loading with targets ES5 and ES2016 or higher may
cause problems. Browsers with support for ES2015 will load the ES2016+ scripts
referenced with script[type="module"] but they may not support ES2016+ syntax.
- Generating browser application bundles...
✔ Browser application bundle generation complete.
- Generating ES5 bundles for differential loading...
✔ ES5 bundle generation complete.
- Generating localized bundles...
✖ Localized bundle generation failed.
Call retries were exceeded
Error response from daemon: The command '/bin/sh -c npm run build' returned a non-zero code: 1
Failed to deploy '<unknown> Dockerfile: build/Dockerfile': Can't retrieve image ID from build stream

Here are excerpts from files that I hope are relevant:

{
  "scripts": {
    "ng": "ng",
    "start": "ng serve --proxy-config proxy.conf.json",
    "build": "npm run ng build --prod",
    "postbuild": "build/replace-i18n-files.sh dist",
    "test": "ng test",
    "test-ci": "ng test --code-coverage --karmaConfig=build/karma-ci.conf.js ",
    "lint": "ng lint ndb-core --type-check",
    "e2e": "ng e2e",
    "compodoc": "npx compodoc -c doc/compodoc_sources/.compodocrc.json",
    "postinstall": "ngcc && node patch-webpack.js",
    "docs:json": "compodoc -p ./tsconfig.json -e json -d .",
    "storybook": "npm run docs:json && start-storybook -p 6006",
    "build-storybook": "npm run docs:json && build-storybook",
    "extract-i18n": "ng extract-i18n --output-path ./src/locale/ && xliffmerge --profile xliffmerge.json de"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^11.2.14",
    "@angular/cdk": "^11.2.13",
    "@angular/common": "^11.2.14",
    "@angular/compiler": "^11.2.14",
    "@angular/core": "^11.2.14",
    "@angular/flex-layout": "^11.0.0-beta.33",
    "@angular/forms": "^11.2.14",
    "@angular/localize": "^11.2.14",
    "@angular/material": "^11.2.13",
    "@angular/platform-browser": "^11.2.14",
    "@angular/platform-browser-dynamic": "^11.2.14",
    "@angular/router": "^11.2.14",
    "@angular/service-worker": "^11.2.14",
    "@ngneat/until-destroy": "^8.0.4",
    "@sentry/browser": "^6.2.5",
    "angulartics2": "^10.0.0",
    "crypto-js": "^4.0.0",
    "deep-object-diff": "^1.1.0",
    "faker": "^5.5.3",
    "font-awesome": "^4.7.0",
    "idb": "^6.0.0",
    "lodash": "^4.17.21",
    "md5": "^2.3.0",
    "moment": "^2.29.1",
    "ngx-filter-pipe": "^2.1.2",
    "ngx-markdown": "^11.1.3",
    "ngx-papaparse": "^5.0.0",
    "npm": "^7.14.0",
    "pouchdb-adapter-memory": "^7.2.2",
    "pouchdb-authentication": "^1.1.3",
    "pouchdb-browser": "^7.2.2",
    "reflect-metadata": "^0.1.13",
    "reveal": "0.0.4",
    "rxjs": "^6.6.7",
    "stream": "0.0.2",
    "tslib": "^2.2.0",
    "uuid": "^8.3.2",
    "webdav": "^4.3.0",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.1102.3",
    "@angular/cli": "^11.2.12",
    "@angular/compiler-cli": "^11.2.12",
    "@babel/core": "^7.13.8",
    "@compodoc/compodoc": "^1.1.11",
    "@schematics/angular": "^11.2.3",
    "@storybook/addon-actions": "^6.1.21",
    "@storybook/addon-essentials": "^6.1.21",
    "@storybook/addon-links": "^6.1.21",
    "@storybook/angular": "^6.1.21",
    "@types/crypto-js": "^4.0.1",
    "@types/faker": "^5.5.0",
    "@types/file-saver": "^2.0.1",
    "@types/jasmine": "~3.6.4",
    "@types/lodash": "^4.14.168",
    "@types/node": "^14.14.31",
    "@types/pouchdb": "^6.4.0",
    "babel-loader": "^8.2.2",
    "codelyzer": "^6.0.1",
    "husky": "^5.1.3",
    "jasmine-core": "~3.7.1",
    "jasmine-spec-reporter": "~6.0.0",
    "karma": "~6.3.1",
    "karma-chrome-launcher": "~3.1.0",
    "karma-cli": "~2.0.0",
    "karma-coverage-istanbul-reporter": "~3.0.3",
    "karma-firefox-launcher": "^2.1.0",
    "karma-jasmine": "~4.0.1",
    "karma-jasmine-html-reporter": "^1.5.4",
    "lint-staged": "^10.5.4",
    "prettier": "^2.2.1",
    "protractor": "~7.0.0",
    "ts-node": "^9.1.1",
    "tslint": "^6.1.3",
    "tslint-config-prettier": "^1.18.0",
    "tslint-plugin-prettier": "^2.3.0",
    "typescript": "^4.1.5",
    "webpack": "^4.6.0"
  }
}

angular.json:

{
  ... projects/project
  "i18n": {
    "sourceLocale": "en-US",
    "locales": {
      "de": "src/locale/messages.de.xlf"
    }
  }
  ... projects/project/architect
  "build": {
    "builder": "@angular-devkit/build-angular:browser",
    "options": {
      "aot": true,
      "outputPath": "dist",
      "index": "src/index.html",
      "main": "src/main.ts",
      "tsConfig": "src/tsconfig.app.json",
      "polyfills": "src/polyfills.ts",
      "localize": true,
      "i18nMissingTranslation": "warning",
      "assets": [
        "src/assets",
        "src/favicon.ico",
        "src/manifest.json"
      ],
      "styles": [
        "node_modules/font-awesome/scss/font-awesome.scss",
        "src/ndb-theme.scss",
        "src/styles.scss"
      ],
      "scripts": [
        "node_modules/marked/lib/marked.js"
      ]
    },
    "configurations": {
      "production": {
        "localize": true,
        "budgets": [
          {
            "type": "anyComponentStyle",
            "maximumWarning": "6kb"
          }
        ],
        "optimization": true,
        "outputHashing": "all",
        "sourceMap": false,
        "namedChunks": false,
        "aot": true,
        "extractLicenses": true,
        "vendorChunk": false,
        "buildOptimizer": true,
        "fileReplacements": [
          {
            "replace": "src/environments/environment.ts",
            "with": "src/environments/environment.prod.ts"
          }
        ],
        "serviceWorker": true
      }
    }
  }
}
0

There are 0 answers