#docker #nrwl-nx
#docker #nrwl-nx
Вопрос:
Я создал NX monorepo с приложениями angular и NestJS и очень старался заставить перезагрузку работать внутри контейнеров, но безрезультатно. Несмотря на то, что каталоги смонтированы правильно, и я проверил, что изменения в хосте записываются внутри контейнера, но каким-то образом процесс их не улавливает.
Я создал отдельное приложение NestJS и успешно заставил его работать с контейнером.
Репозиторий Github: https://github.com/navdbaloch/dockerized-development-with-nx-monorepo-angular-nestjs
ENV: windows 10 с WSL2, Docker Desktop 4.2.0
Далее следует docker-compose.xml файл
version: '3.7'
services:
frontend:
container_name: test-frontend
hostname: poirot_frontend
image: poirot_frontend
build:
context: .
dockerfile: ./apps/fwa/Dockerfile.angular
target: development
ports:
- 4200:4200
networks:
- poirot-network
depends_on:
- api
volumes:
- .:/usr/src
- /usr/src/node_modules
command: npm run start:app
api:
container_name: test-api
hostname: poirot_api
image: poirot_api
build:
context: .
dockerfile: ./apps/fwa-api/Dockerfile.api
target: development
volumes:
- .:/usr/src
- /usr/src/node_modules
ports:
- 3333:3333
- 9229:9229
command: npm run start:api
env_file:
- .env
networks:
- poirot-network
networks:
poirot-network:
driver: bridge
Dockerfile.angular
FROM node:14-alpine As development
WORKDIR /usr/src
COPY package*.json ./
RUN npm install minimist amp;amp;
npm install --only=development
COPY . .
RUN npm run build:app
#! this is the production image
FROM nginx:latest as production
COPY ./docker/angular.conf /etc/nginx/nginx.conf
COPY --from=development /usr/src/dist/apps/fwa /usr/share/nginx/html
Dockerfile.api
FROM node:14-alpine As development
WORKDIR /usr/src
COPY package*.json ./
RUN npm install minimist amp;amp;
npm install --only=development
COPY . .
RUN npm run build:api
#! this is the production image
FROM node:14-alpine as production
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR /app
COPY package*.json ./
RUN npm install minimist typescript ts-node lodash reflect-metadata tslib rxjs @nestjs/platform-express @types/bcrypt amp;amp;
npm install --only=production
COPY . .
COPY --from=development /usr/src/dist/apps/fwa-api ./dist
EXPOSE 3333
#! Migration runenr command: node_modules/ts-node/dist/bin.js migration-runner.ts
CMD ["node", "dist/main"]
Ответ №1:
Наконец, я смог заставить его работать после долгих проб и ошибок.
Для приложения angular команда сервера была изменена с npx nx serve
на npx nx serve --host 0.0.0.0 --poll 2000
.
Для Api добавьте "poll": 2000
опцию в angular.json
projects.api.architect.build.options
Я также обновил репозиторий Github для справки для тех, кто ищет такое же решение.