docker-syncでDocker-for-Macの遅い問題が解決した
Dockerコンテナ側とホスト側であるMac間のファイル同期が致命的なぐらい遅かったのですが、docker-sync を使ったらかなり改善されました。
docker-syncとは
ホスト側のファイルをDockerコンテナ側へマウントさせることでファイル同期を実現するのではなく、ファイル変更のタイミングで rsync や union によるファイルの転送を行ってファイル同期を実現するライブラリです。
インストール
sudo gem install docker-sync
brew install fswatch
brew install unison
curl "https://raw.githubusercontent.com/hnsl/unox/master/unox.py" -o "/usr/local/bin/unison-fsmonitor" && chmod +x /usr/local/bin/unison-fsmonitor
sudo easy_install pip && sudo pip install macfsevents
docker-syncs.ymlを作成
dockerc-compose.yml と 同じディレクトリに docker-syncs.yml を作成してください。
version: '2'
options:
compose-file-path: 'docker-compose.yml' //使用するdocker-compose.ymlを指定
verbose: true
syncs:
MY_VOLUME:
src: './app' // 同期元のディレクトリ ./app以下をマウント
dest: '/app' // 同期先のディレクトリ
docker-compose.ymlを作成
version: '2'
services:
server:
build: ./app
volumes:
- MY_VOLUME:/app
…
volumes:
MY_VOLUME:
external: true
以上でセットアップは完了です。
$ docker-sync start を実行するとファイルの同期を行ってくれます。
デーモンで起動させたい場合は$ docker-sync-daemon startを実行してください。
最近はDocker上で開発しています。
導入した当初は学習コストの高さゆえ苦労しておりましたが、少しずつDockerの便利さを実感しております!