Dis*_*uan 5 node.js docker reactjs docker-compose next.js
我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
任何建议,将不胜感激。
我在 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
},
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我必须稍微改变@davidatthepark 解决方案才能让它为我工作。看起来webpackDevMiddleware不再支持了。
module.exports = {
webpack: (config, _) => ({
...config,
watchOptions: {
...config.watchOptions,
poll: 800,
aggregateTimeout: 300,
},
}),
}
Run Code Online (Sandbox Code Playgroud)
您是否通过公开 webpack 默认热重载端口进行了测试?
添加到您的Dockerfile
...
EXPOSE 49153
...
Run Code Online (Sandbox Code Playgroud)
并更新您的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
Run Code Online (Sandbox Code Playgroud)
希望这有帮助,
问候
| 归档时间: |
|
| 查看次数: |
3644 次 |
| 最近记录: |