吞吐手表似乎在Docker中冻结

我试图“docker化”我们的开发环境。 我们有一个build立系统,监视我们的js / sass / jade文件的变化。 这是所有设置在docker以外的工作。

我已经创build了一个docker容器,并将我的代码库(使用一个卷)。 所有先进的npm安装和凉亭安装完成成功。 我最后一步运行吞咽,它运行正常,并build立,但没有拿起任何我们的任何js / sass / jade文件的任何后续更改。

我使用以下命令运行构build系统:

docker run -it -v $(pwd):/code/ client gulp reset

有没有人在开发环境中有类似的设置? 你做了什么工作,让你的手表工作和展示大楼?

编辑:我想我可以做docker之外的吞噬生成/手表,只安装生成的文件,但我宁愿包含在docker的所有内部,以便主机不需要担心任何依赖build立/运行我们的应用

编辑2:这里是我的dockerfile和docker-compose.yml

 #Dockerfile FROM node:0.12.5 RUN mkdir /code WORKDIR /code RUN mkdir client WORKDIR client RUN mkdir .tmp ADD ./client/package.json /code/client/package.json ADD ./client/bower.json /code/client/bower.json RUN npm install gulp -g RUN npm install bower -g RUN npm install RUN npm rebuild node-sass RUN bower --allow-root install CMD gulp reset 

 client: build: . volumes: - .:/code 

我从来没有能够得到任何基于inotify的文件监视器来处理虚拟机添加的客户机,并且基于这个机制,它不太可能在任何时候都可用。 我的首选方法如下:

  • 假设我的本地源代码在/ code中
  • 在/ code上本地运行我的观察器
  • 当检测到更改时,rsync本地/代码到远程/代码(安装为容器唯一卷)在容器中

示例rsync:

 docker run --rm --volumes-from sourcecode my/image \ rsync \ --delete \ --recursive \ --safe-links \ --exclude .git --exclude node_modules \ /local/repo/ /container/repo 

这样可以避免很多问题,并且可以使您更清楚地了解您希望容器环境看到的内容。