サーバ環境はさくら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 (記述を追加して保存)