Поэтому я использую Docker для создания рабочих образов, которые будут развернуты на облачной машине. Изображение в производственном режиме отлично работает на моей локальной машине.
Однако на облачной машине это не удалось. Выдает ошибку примерно так:
EINVAL: неверный аргумент, rmdir '/ app / dist / ams-mobile / assets / images'
Ошибка: EINVAL: неверный аргумент, rmdir
'/ приложение / DIST / АВМ-мобильные / активы / изображения'
в Object.rmdirSync (fs.js: 677: 3)
at Observable.rxjs_1.Observable [as _subscribe] (/app/node_modules/@angular-devkit/core/node/host.js:188:28)
at Observable._trySubscribe (/app/node_modules/rxjs/internal/Observable.js:44:25)
на Observable.subscribe (/app/node_modules/rxjs/internal/Observable.js:30:22)
на /app/node_modules/rxjs/internal/util/subscribeTo.js:22:31
в Object.subscribeToResult (/app/node_modules/rxjs/internal/util/subscribeToResult.js:10:45)
на MergeMapSubscriber._innerSub (/app/node_modules/rxjs/internal/operators/mergeMap.js:82:29)
на MergeMapSubscriber._tryNext (/app/node_modules/rxjs/internal/operators/mergeMap.js:76:14)
at MergeMapSubscriber._next (/app/node_modules/rxjs/internal/operators/mergeMap.js:59:18)
на MergeMapSubscriber.Subscriber.next (/app/node_modules/rxjs/internal/Subscriber.js:67:18)
в Observable._subscribe (/app/node_modules/rxjs/internal/util/subscribeToArray.js:5:20)
at Observable._trySubscribe (/app/node_modules/rxjs/internal/Observable.js:44:25)
на Observable.subscribe (/app/node_modules/rxjs/internal/Observable.js:30:22)
на MergeMapOperator.call (/app/node_modules/rxjs/internal/operators/mergeMap.js:39:23)
на Observable.subscribe (/app/node_modules/rxjs/internal/Observable.js:25:22)
на /app/node_modules/rxjs/internal/util/subscribeTo.js:22:31
в Object.subscribeToResult (/app/node_modules/rxjs/internal/util/subscribeToResult.js:10:45)
на MergeMapSubscriber._innerSub (/app/node_modules/rxjs/internal/operators/mergeMap.js:82:29)
на MergeMapSubscriber._tryNext (/app/node_modules/rxjs/internal/operators/mergeMap.js:76:14)
at MergeMapSubscriber._next (/app/node_modules/rxjs/internal/operators/mergeMap.js:59:18)
на MergeMapSubscriber.Subscriber.next (/app/node_modules/rxjs/internal/Subscriber.js:67:18)
на MapSubscriber._next (/app/node_modules/rxjs/internal/operators/map.js:55:26)
Это мой Dockerfile:
# Base image to be used for testing and for building production image
FROM node:10.14.1-alpine as build-dev
WORKDIR /app
COPY package.json .
COPY package-lock.json .
RUN npm ci \
&& npm rebuild
COPY . .
RUN $(npm bin)/ng build
# Image to generate production build
FROM build-dev as build-prod
WORKDIR /app
RUN set -ex \
&& $(npm bin)/ng build \
--prod
# Image for serving built resources on nginx
FROM nginx:alpine as app-prod
WORKDIR /usr/share/nginx/html
# Adds envsubst for use on environment substitution during startup
RUN apk add --update --no-cache --virtual .build_deps \
gettext \
&& apk add --update --no-cache --virtual .run_deps \
libintl \
&& cp /usr/bin/envsubst /usr/local/bin/envsubst \
&& apk del .build_deps
COPY config/entrypoint.sh /entrypoint.sh
RUN chmod a+x /entrypoint.sh
COPY config/nginx-gzip.conf /etc/nginx/conf.d/gzip.conf
COPY --from=build-prod /app/dist/ams-mobile /usr/share/nginx/html
ENTRYPOINT ["/entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]
# Image for testing
FROM build-dev as app-test
RUN apt-get update && apt-get install -y --no-install-recommends \
chromium \
vim
ENV CHROME_BIN=chromium
RUN set -xe \
&& ng lint \
&& ng test
Это мой файл docker-compose.yml
version: '3.4'
services:
spa:
container_name: ams-mobile
build:
context: .
target: app-prod
ports:
- '8000:80' # Open port 8000 on server
env_file:
- ./${ENV:-test-variables.env}
И вот как я поднимаю контейнер:
ENV=config/environment/test-variables.env docker-compose up -d --build --force-recreate
Что может быть не так?
Спасибо!