You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Docker下的NestJS开发环境实现代码修改实时生效?

解决开发环境NestJS代码变更不生效问题

核心原因

你当前的配置是标准生产环境配置,存在两个导致热更新失效的问题:

  • 容器内的代码是镜像构建阶段静态拷贝的版本,本地代码修改后不会同步到运行中的容器内
  • 启动命令用的是npm run start:prod,运行的是提前构建好的静态产物,没有监听代码变更的热重载能力

调整步骤

1. 新增开发环境专属Dockerfile

在你的api项目根目录下新建Dockerfile.dev,和原有生产用的Dockerfile区分开,避免影响生产部署配置:

FROM node:14.4.0-alpine

# Create app directory
WORKDIR /usr/src/app

# Copy package files
COPY package*.json ./

# Install npm packages
RUN npm install

# 开发环境代码通过挂载同步,不需要提前拷贝全量代码和构建,直接启动带热重载的开发服务
CMD [ "npm", "run", "start:dev" ]

2. 修改docker-compose.yml的api服务配置

给api服务新增挂载配置,指定用开发版Dockerfile构建:

services:
  # 其他服务配置保持不变
  api:
    build:
      context: ../api
      dockerfile: Dockerfile.dev # 新增:指定使用开发环境Dockerfile
    hostname: tracking_code_api
    ports:
      - '${APP_PORT}:3000'
    # 新增volumes配置
    volumes:
      - ../api:/usr/src/app # 把本地api目录挂载到容器内工作目录,本地修改实时同步到容器
      - /usr/src/app/node_modules # 匿名卷,防止本地node_modules覆盖容器内的版本,避免跨系统二进制兼容问题
    environment:
      # 原有环境变量全部保持不变
    depends_on:
      # 原有依赖全部保持不变

3. 验证配置

确认你api项目的package.json中scripts配置存在start:dev命令,默认NestJS项目的配置如下,无需额外修改:

{
  "scripts": {
    "start:dev": "nest start --watch"
  }
}

生效方式

修改完成后执行一次docker-compose up --build重新构建启动服务,后续修改本地代码就会自动触发容器内的代码热重载,不需要重新构建镜像。

内容的提问来源于stack exchange,提问作者hu7sy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 23:15:01