blog

はじめての Docker シリーズはじめてのDocker:Docker上で動かしているMiddlemanにアクセスしてLiveReloadを使う(小ネタ)

    • Ryuichi Nonaka
    この記事は書かれてから1年以上経過しており、内容が古い場合があります。

    Docker上でMiddleman Serverを動かし、Boot2docker経由でサイトにアクセスした際にLiveReloadも動かす方法について小ネタを紹介します。Dockerコンテナはインフラが得意な方が作っている前提で説明するので、分からない部分は最寄りのインフラ屋さんにご相談ください。Dockerについては以前紹介したはじめてのDocker:ウェブデザイナーでも覚えておきたいMac向けDocker環境構築と使い方をどうぞ。

    LiveReloadが動作する条件

    まず、ブラウザからアクセスしたいWebサーバーはBoot2docker上のDockerコンテナで動いているWebサーバーです。つまりBoot2docker(192.168.59.103:4567)を経由してDockerコンテナ上で動くWebサーバー(0.0.0.0:4567)にアクセスしています。LiveReloadも同様にDockerコンテナ上のWebSocketサーバー(0.0.0.0:35729)と通信してブラウザの拡張機能がページをリロードします。

    原理は簡単ですが、Boot2docker(192.168.59.103:35729)からWebSocketサーバー(0.0.0.0:35729)につながるようにしてやることでLiveReloadが使えるようになります。

    解決方法

    1つの解決方法としてBoot2dockerの35729ポートをローカルマシンのlocalhost:35729に割り当てる方法があります。$ boot2docker upでBoot2dockerを起動後に以下のコマンドを実行します。

    $ boot2docker ssh -L 35729:localhost:35729
    

    対象のコンテナを起動していればLiveReloadが動くようになるはずです。 以上、小ネタの紹介でした。

    参考サイト

    シリーズ

    1. はじめてのDocker:ウェブデザイナーでも覚えておきたいMac向けDocker環境構築と使い方
    2. はじめてのDocker:Docker上で動かしているMiddlemanにアクセスしてLiveReloadを使う(小ネタ)

    コメント・フィードバック