DockerコンテナのRailsプロジェクトをsshで変更して動的に変更する

サーバ環境はさくらVPS、Centos6.5, Apache
dockerコンテナのRailsプロジェクトはDevelopment環境で動かす。
ポートの割り当てがバグってようにもみえるけど、一応動いた。

まずsshdをデーモンで動かす。
webサーバ用のポート(この場合は3000)も同時に指定して開ける。
(※正しい使い方じゃないようにも見えるけど)

$ sudo docker run -d -p 3000 -p 22 tcnksm/rails_app2 /usr/sbin/sshd -D

確認してみる。

$ sudo docker ps -a

CONTAINER ID        IMAGE                      COMMAND                CREATED             STATUS              PORTS                                            NAMES
99aa341a88a0        tcnksm/rails_app2:latest   /usr/sbin/sshd -D      11 seconds ago      Up 10 seconds       0.0.0.0:49161->22/tcp, 0.0.0.0:49162->3000/tcp   trusting_darwin           

ssh用のポート、すなわちDockerコンテナ内で22番に見えるポートがホスト(さくらVPS)の49161番に割り当てられ、
webサーバ用のポート、すなわちDockerコンテナ内で3000番に見えるポートがホスト(さくらVPS)の49162に割り当てられる。

そしてsshでコンテナに入ってrailsサーバーを起動する。

$ ssh root@0.0.0.0 -p 49161
$ cd /myapp
$ rails server

ブラウザで(さくらVPSのIP):49162にアクセスすると、Railsプロジェクトが起動しているのが分かる。

別のシェルから同じようにsshで入って、例えばpublic/index.htmlを編集し、
ブラウザをリロードしてみると、リアルタイムでdockerコンテナの
Railsプロジェクトへの変更が反映されているのが確認できる。

$ ssh root@0.0.0.0 -p 49161
$ cd /myapp
$ vi public/index.html

(記述を追加して保存)