用于通知Docker Contianers有关在Bash for Windows上装载的更改的工具。
docker-bash-volume-watcher的Python项目详细描述
这个fork接受了merofeev的docker-windows-volume-watcher,并使其与bash for windows(在windows上也称为ubuntu)一起工作
脚本监视Windows主机上Docker容器的目录绑定,并将文件更改通知容器。
该脚本旨在解决windows主机上的文件更改事件传播问题。由于Linux内核中CIFS实现的局限性,Docker for Windows不会将主机挂载文件夹中的文件更改事件传播到容器。这个问题使得现代框架(如jekyll、ng cli等)开发服务器的监视模式变得无用,因为容器不会被通知文件更改。这个问题在Docker Community Forums中描述
安装
此脚本可以与pip一起安装(均支持python 2&3)。
pip install docker-bash-volume-watcher
用法
监视所有容器的所有目录绑定。脚本将侦听容器的启动/停止事件,并将文件更改通知所有正在运行的容器
docker-volume-watcher
仅监视容器container_name的绑定。
docker-volume-watcher container_name
仅监视子目录/not_node_modules中container_name的绑定。
docker-volume-watcher container_name /not_node_modules
您还可以使用*和?字符指定通配符。例如:仅监视名称包含myproject的容器的绑定
docker-volume-watcher *myproject*
使用标志-v启用详细输出:脚本将报告合格容器的启动/停止事件并打印所有检测到的文件更改
限制
- 脚本不会传播到容器文件删除事件
- 脚本要求在容器中安装stat和chmod实用程序(对于大多数容器,默认情况下应该是这样)
实施细节
脚本使用watchdog包来观察主机目录的文件更改事件。一旦触发文件更改事件,脚本将读取已更改文件的文件权限(使用statutil),并使用相同的值(使用chmodutil)重写文件权限,从而触发容器内的inotify事件。
使用“重写文件权限方法”,而不是使用touchutil更新上次修改的文件由于触摸将导致事件循环:触摸将触发Windows中的文件更改事件,脚本将处理此事件并再次触摸文件等。