我想为react-hot-loader创建Docker容器。但是inotify可能不能在容器中工作。因此,HMR被破坏了。
我使用Docer for mac版本1.12.0-rc2-beta16 (内部版本: 9493)。
这是我的docker-compose.yml。
version: "2"
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules我的Dockerfile如下
FROM node:6.2
RUN apt update && apt install vim inotify-tools -y
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
EXPOSE 8000
CMD ["npm", "start"]我将react-hot-loader目录放在相同的目录中。
当我执行docker-compose up时,我可以访问localhost:8000,并且我的React项目工作正常。然而,即使我在本地机器上编辑我的React组件,HMR也无法工作。
当我试图在容器中编辑我的React组件时,HMR工作得很好。
此外,我还检查了inotify与inotify-tools的配合是否正常工作。当我在本地机器上编辑文件时,inotify就不起作用了。当然,当我在容器中编辑文件时,它工作得很好。
发布于 2016-06-30 12:47:19
我重新启动了我的mac,然后HMR工作得很好。
发布于 2021-05-26 18:04:22
Docker文件系统不支持inotify,你可以通过webpack的配置来修复:
watchOptions: {
aggregateTimeout: 300,
poll: 1000
}github问题:Docker support
https://stackoverflow.com/questions/38088694
复制相似问题