【问题标题】:Why NextJS using Docker container did not reload after changed code for dev environment?为什么使用 Docker 容器的 NextJS 在更改开发环境的代码后没有重新加载?
【发布时间】:2019-06-05 05:08:53
【问题描述】:

我正在尝试使用 Dockerfile 在 Docker 容器上运行 NextJS,并通过 docker-compose 运行,在我更改了 JS 文件(例如 index.js)中的代码后,Next 服务器没有重新加载。

但是当我尝试在不使用 Docker 的情况下在外面运行时(通过直接执行“npm run dev”命令),Next 服务器确实重新加载顺利。

我也尝试通过“nodemon”命令(在容器内)运行服务器,它也没有成功。

Dockerfile:

FROM node:10.14.2-alpine
COPY . /home/next_app
WORKDIR /home/next_app
RUN npm install

docker-compose.yml:

version: "3.6"
services:
  self_nextjs:
    container_name: self_nextjs
    build:
        context: ./app
        dockerfile: Dockerfile
    ports:
        - 3000:3000
    volumes:
        - ./app:/home/next_app
        - /home/next_app/node_modules
    networks:
        - zen_frontend
    restart: always
    command: npm run dev

networks:
  zen_frontend:
      name: zen_frontend
      driver: bridge

任何建议将不胜感激。

【问题讨论】:

    标签: node.js reactjs docker docker-compose next.js


    【解决方案1】:

    你有没有通过暴露 webpack 默认热重载端口进行测试?

    添加到您的Dockerfile

    ...
    EXPOSE 49153
    ...
    

    并更新您的docker-compose.yml

    version: "3.6"
    services:
      self_nextjs:
        container_name: self_nextjs
        build:
            context: ./app
            dockerfile: Dockerfile
        ports:
            - 3000:3000
            - 49153:49153
        volumes:
            - ./app:/home/next_app
            - /home/next_app/node_modules
        networks:
            - zen_frontend
        restart: always
        command: npm run dev
    
    networks:
      zen_frontend:
          name: zen_frontend
          driver: bridge
    

    希望对您有所帮助,

    问候

    【讨论】:

    【解决方案2】:

    我在 Windows 10 上遇到了同样的问题。我按照此线程 https://github.com/zeit/next.js/issues/6417 中的一些说明进行操作。基本上,您必须添加一个next.config.js 来轮询更改。我不确定 MacOS 是否有同样的问题。

    module.exports = {
      webpackDevMiddleware: config => {
        config.watchOptions = {
          poll: 800,
          aggregateTimeout: 300,
        }
        return config
      },
    }
    

    【讨论】:

    • 这是我苦苦挣扎几天后找到的最佳解决方案,谢谢!
    猜你喜欢
    • 2012-12-15
    • 2019-09-11
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2016-11-29
    • 2022-09-25
    • 2023-03-31
    相关资源
    最近更新 更多