Inotify不能在Docker for Mac上工作

时间:2016-06-29 01:08:09

标签: docker webpack-dev-server webpack-hmr react-hot-loader

我想为react-hot-loader创建Docker容器。但是inotify可能在容器内部不起作用。因此,HMR被打破了。

我使用Docer for mac Version 1.12.0-rc2-beta16(build: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不起作用。当然,当我在容器内编辑文件时,它可以正常工作。

2 个答案:

答案 0 :(得分:1)

我重新启动了我的mac,然后HMR运行良好。

答案 1 :(得分:0)

Docker fs 不支持 inotify,你可以通过 webpack config 修复:

watchOptions: {
    aggregateTimeout: 300,
    poll: 1000
}

github 问题:Docker support