Posted at

Rocket.ChatをDocker Composeで使う

More than 3 years have passed since last update.


概要

Docker Compose コマンド1つで Rocket.Chat が動く環境を構築します。ソースコードからの構築や Docker コマンドの操作は面倒ですが、それらの課題を Compose を使って解決します。


Rocket.Chat とは? 「これは Slack ですか?」

Rocket.Chat ( https://rocket.chat/ ) は、オープンソースなウェブ・チャット・プラットフォームです。GitHub で有志による開発が行われており、MIT ライセンスで配布されています。ぶっちゃけ Slack クローンです。


動機

Docker や Docker Compose の実演(デモ)では Word Press が比較的多用される。しかし、Blog を書かない方にとっては興味対象外であることと、毎回デモに WordPress というのはベタすぎる。そこで、WordPress にかわり、アプリ+データベースの構成でありながら、実用度が高く Docker で利用可能なものを探し出した。……という極めて不純な理由です。


動作環境


  • Docker daemon が稼働中の環境

  • Docker Compose がセットアップ済み


手順

任意のディレクトリを作成し、docker-compose.ymlを作成します。以下の例はドキュメントのもので、「rocketchat」と「mongodb」の2つのコンテナを作成・リンクするものです。また、ホスト側のポート 80 番をコンテナのポート 80 に割り当てています。

rocketchat:

image: rocketchat/rocket.chat
environment:
- MONGO_URL=mongodb://mongodb/rocketchat
- ROOT_URL=http://localhost:80
links:
- mongodb
ports:
- 80:80

mongodb:
image: mongo
ports:
- 27017

起動するには、docker-compose up コマンドを使います。

$ docker-compose up -d

Starting rkt_mongodb_1...
Starting rkt_rocketchat_1...

暫く待つと、Rocket.Chat が起動します。docker-compose psコマンドで状況を確認します。

$ docker-compose ps

Name Command State Ports
------------------------------------------------------------------------------------
rkt_mongodb_1 /entrypoint.sh mongod Up 0.0.0.0:32775->27017/tcp
rkt_rocketchat_1 /bin/sh -c bash $METEORD_D ... Up 0.0.0.0:80->80/tcp

あとは、ブラウザから対象サーバのポート 80 にアクセスすると、次の画面が開かれます。「新しいアカウントを登録」をクリックします。

それからユーザ情報を登録していくと、最終的に次のような(どこかで見たような)画面が見えます。「#general」等をクリックすると、いわゆるチャットルームのような操作が可能です。

停止と起動はstopstartです。データはローカルの/data/dbという名称のボリュームを使用しますので、再起動後もそのまま使えます。

$ docker-compose stop

Stopping rkt_rocketchat_1... done
Stopping rkt_mongodb_1... done
$ docker-compose start
Starting rkt_mongodb_1...
Starting rkt_rocketchat_1...

最後にもうこれ以上使わない場合は、停止して削除します(-v オプションは、ボリュームもまとめて削除するオプションです)

$ docker-compose rm -v

No stopped containers
$ docker-compose stop
Stopping rkt_rocketchat_1... done
Stopping rkt_mongodb_1... done