Nx моно-репозиторий с NestJS и AngularJS не перезагружается в контейнере

#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 для справки для тех, кто ищет такое же решение.