node.js - 为什么使用 Docker 容器的 NextJS 在更改开发环境的代码后没有重新加载?
问题描述
我正在尝试使用 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
码头工人-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
任何建议,将不胜感激。
解决方案
你有没有通过暴露 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
希望这有帮助,
问候