Rocket.Chatをdocker を使って Windowsに設定する

Rocket.Chatとは
---------------

web ベースでchat ができるアプリ。社内で使おうと思って
設定する方法をまとめてみた。

docker-composeの設定
--------------------

Windowsでは、docker toolbox を使うと docker と docker-compose を同時に設定できる

説明は

- https://docs.docker.com/toolbox/toolbox_install_windows/

ダウンロード先は

- https://www.docker.com/products/docker-toolbox

現時点のバージョンでは

- DockerToolbox-1.12.0.exe

がダウンロードできる。これを使って、インストールを実行し、完了すると
デスクトップに

- Docker Quickstart Terminal

のアイコンが生成される。

初めてこのアイコンをダブルクリックすると、docker の初期化のための
イメージのダウンロードや、仮想ネットワークの設定が開始され、
しばらくして、ターミナルのプロンプト待ち状態となる

仮想IPアドレスの確認
-------------------

最初、間違って http://127.0.0.1:3000 へアクセスしてみたが、
何も表示されない。
docker が起動しているIPアドレスへ接続する必要があるので、
仮想ネットワークのIPアドレスを確認するコマンド

    docker-machine ls

を実行して、URLに記載されているIPアドレスを書き留めておく
例：

```
$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v1.12.1
```

この場合には、192.168.99.100 に割り当てられているので、
ブラウザから

- http://192.168.99.100:3000

にアクセスすることになる。

Rocket.Chatのdocker-compose.ymlの作成
-------------------------------------

説明URL

- https://rocket.chat/docs/installation/docker-containers/docker-compose

まずは、サンプルは

- https://raw.githubusercontent.com/RocketChat/Rocket.Chat/develop/docker-compose.yml

にある、これをひな形に以下のように編集した

```yaml
mongo:
  image: mongo
# volumes:
#    - ./data/runtime/db:/data/db
#    - ./data/dump:/dump
  command: mongod --smallfiles --oplogSize 128

rocketchat:
  image: rocketchat/rocket.chat:latest
# volumes:
#    - ./uploads:/app/uploads
  environment:
    - PORT=3000
    - ROOT_URL=http://{仮想IPアドレス}:3000  
    - MONGO_URL=mongodb://mongo:27017/rocketchat
    - MAIL_URL=smtp://｛メールサーバーのIPアドレス｝
#    - HTTP_PROXY=http://proxy.domain.com
#    - HTTPS_PROXY=http://proxy.domain.com
  links:
    - mongo:mongo
  ports:
    - 3000:3000

```

編集したのは、rocketchat: の ROOT-URLに先ほどの仮想IPアドレスを記載する。あと、通知をメールでおくるので、MAIL_URLの設定も必要。
社内からだと、HTTP_PROXY, HTTPS_PROXY のproxy 設定が必要かも・・

コメントアウトしてある volumes の設定をうまくすることで、
データをdockerの仮想ドライブではないローカルディスクに
設定することができ、バージョンアップなどにも対応しやすく
なると思いますが、windows でのdocker 起動時の volume の設定は
わかりにくいので他のサイトを参照してください。


これを *docker-compose.yml* というファイル名で保存し、
docker のプロンプトでこのファイルが保存されたディレクトリへ移動する。

例えば、c:\docker\rocket.chat\docker-compose.yml に保存した場合には

    cd c:/docker/rocket.chat

で移動する。

docker-compose の起動
---------------------

docker-compose.yml のフォルダに移動してから

    docker-compose up -d

とタイプする。これは、docker-compose の初期化のため、
イメージをダウンロードし、デーモンを起動するオプションである。
*docker-compose ps* でプロセスを確認

```
$ docker-compose ps
         Name                        Command               State           Ports
-----------------------------------------------------------------------------------------
rocketchat_mongo_1        /entrypoint.sh mongod --sm ...   Up      27017/tcp
rocketchat_rocketchat_1   node main.js                     Up      0.0.0.0:3000->3000/tcp
```

mongo と rocketchat の node.js が起動していて、ポート 3000 番で
待機している様子

ユーザー登録
-----------

最初のユーザー登録が管理者になるみたいなので、
新しいユーザー登録で自分のアカウントを登録する。

管理設定
--------

ユーザー登録画面からログインして、

- http://{仮想IPアドレス}:3000/admin/info

で管理画面に移動できる

停止&開始
---------

停止

    docker-compose stop

開始

    docker-compose start


削除

    docker-compose rm -v

参考にしたページ
---------------
[Rocket.ChatをDocker Composeで使う - Qiita](http://qiita.com/zembutsu/items/eea5c3216911b1ee71e1)