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の便利さを実感しております!

Related Contents

Pickup Contents