最近,在 mac 上面安装了 docker,然后让开发环境运行在 docker 上面
总的来说感觉不错
但是同一个页面,在 linux 上面的时候需要 4 秒,在 mac for docker 上面需要 25 秒
调查了一下原因
搜索了一下解决办法
1. vagrant -> virtualbox -> linux -> docker
试了下用 vagrant 安装 linux,然后 docker 跑在 linux 上面,用 nfs 来同步
速度确实变快了,但是多安装了一层总感觉有点麻烦
所以调查了一下其他的解决办法
2. docker-sync
在 docker-for-mac 的网站和 github 的 issue 里面有介绍
试了下感觉不错,总结下如何使用的
1. 在 mac 上面安装 docker-sync$ gem install docker-sync
$ brew install fswatch
$ brew install unison
$ brew install eugenmayer/dockersync/unox
$ docker-sync start
2. 添加 docker-sync.yml 文件version: '2'
syncs:
sync-folder:
src: '.'
sync_strategy: 'unison'
# 同步时的用户ID,不指定的话为root
sync_userid: '1000'
sync_excludes: ['vendor/bundle/', 'node_modules', 'tmp']
具体设置可以看这里
3. 添加 docker-compose-dev.yml 文件version: '3'
volumes:
sync-folder:
external: true
services:
app:
volumes:
- sync-folder:/www/sample_project
把 mac 的当前文件夹和 docker 服务器里面的/www/sample_project 进行同步
4. docker-compose up$ docker-compose -f docker-compose.yml -f docker-compose-dev.yml up -d
然后无论在 mac 还是在 docker 里面进行文件修改,都会自动进行同步
有时候不知道什么原因无法同步的时候可以重启 docker-sync
$ docker-sync clean
$ docker-sync start
总结
mac for docker 的文件同步很慢,目前发现两种解决方法
vagrant -> virtualbox -> linux -> docker
docker-sync
个人比较喜欢第二种,有更好的解决办法请回复我