Nx Monorepo中Nest.js Gateway服务容器内热重载失效问题求助
Nx Monorepo中Nest.js Gateway服务容器内热重载失效问题求助
大家好,我最近在折腾Nx Monorepo里的Nest.js Gateway服务,想把热重载配置好,这样改代码不用反复重启容器,省不少事。但试了好多次,修改本地文件后容器里的服务完全没反应,热重载根本触发不了。
我查了不少资料,大部分都推荐开启轮询模式,但我按配置加了相关环境变量后还是没用,实在没辙了,来请教下各位大佬有没有可行的解决思路。
我的配置详情
Gateway服务的Dockerfile
# Base Image (Makes maintaining versions easier) FROM node:22-alpine AS base WORKDIR /app # Install jq for JSON manipulation RUN apk add --no-cache jq moreutils # NPM Package Installation FROM base AS deps WORKDIR /app # Workspace Dependencies - Gateway COPY source/api/gateway/tsconfig.json /app/source/api/gateway/tsconfig.json COPY source/api/gateway/package.json /app/source/api/gateway/package.json # Workspace Dependencies - API Utils COPY source/lib/api-utils/tsconfig.json /app/source/lib/api-utils/tsconfig.json COPY source/lib/api-utils/package.json /app/source/lib/api-utils/package.json # Workspace Dependencies - Monorepo COPY package.json /app/ COPY yarn.lock /app/ RUN yarn install --frozen-lockfile # Application Builder FROM base AS application-builder WORKDIR /app COPY --from=deps /app/node_modules /app/node_modules COPY .prettierrc /app/.prettierrc COPY .prettierignore /app/.prettierignore COPY eslint.config.mjs /app/eslint.config.mjs COPY jest.config.ts /app/jest.config.ts COPY jest.preset.js /app/jest.preset.js COPY nx.json /app/nx.json COPY package.json /app/package.json COPY tsconfig.base.json /app/tsconfig.base.json COPY tsconfig.json /app/tsconfig.json COPY yarn.lock /app/yarn.lock # Source COPY source/api/gateway /app/source/api/gateway COPY source/lib/api-utils /app/source/lib/api-utils RUN yarn nx sync RUN NX_DAEMON=false yarn nx run api-gateway:build --skip-nx-cache # Development Build FROM application-builder AS development EXPOSE 4000 4200 CMD ["yarn", "nx", "run", "api-gateway:serve", "--configuration=development", "--watch"] # Production Build # Omitted section for production to keep the question concise
Podman Compose配置
gateway: build: context: ../ dockerfile: docker/DockerFile target: development container_name: gateway privileged: true environment: - CHOKIDAR_USEPOLLING=true - CHOKIDAR_INTERVAL=300 - WATCHPACK_POLLING=true - FORCE_COLOR=1 - TZ=UTC ports: - 4000:4000 - 4200:4200 volumes: - ../source/api/gateway:/app/source/api/gateway
已尝试的方案
- 配置了
CHOKIDAR_USEPOLLING、WATCHPACK_POLLING等环境变量,开启文件变更轮询 - 将本地Gateway源码目录挂载到容器对应路径,确保文件变更能同步到容器内
我是参考Node.js容器开发的相关指南来配置的,但目前还是没解决热重载失效的问题,有没有朋友遇到过类似情况?求指点!
内容来源于stack exchange
相关产品推荐
相关产品推荐

