社内チャットツール「Let’s Chat」の構築
「Let’s Chat」はオープンソースのWebチャットツールです。ここでは、Let’s Chatの環境構築について説明します。
Let’s Chatとは
ベンチャー企業やスタートアップ企業では、SlackやHipChatなどのチャットを使って、開発エンジニア間のコミュニケーションを活発に行っているところもあります。チャットはEメールに比べて即応性もあり、対面での会話に近い、密なコミュニケーションを行うことができます。また、開発プロジェクトが遠隔地に分散している場合などは、チャットが対面での打ち合わせを補完するものとして機能するでしょう。
そこで、ローカル環境にWebブラウザベースのチャット環境を構築すれば、開発チームメンバー同士が気軽にコミュニケーションを取り合うことができます。
Let's Chat には以下のような機能があります。
- 複数のチャットルームを作成可能
- メンション
- 画像の埋め込み
- ファイルアップロード
- 過去ログの閲覧
Let’s ChatはSlackのUIによく似た構成で、直感的に操作できます。Let's ChatはNode.js 0.10/MongoDB 2.6/Python 2.7の環境で動作します。
Let's Chat用コンテナの起動
Let’s Chatの公式イメージは以下に公開されています。今回はこのsdelements/lets-chatを使って構築します。
Dockerfileが公開されていますので、どのような環境が構築されているかの詳細を確認することができます。
Let’s Chatのデータを保存するにはMongoDBによるデータベースサーバが必要になります。そのため、Docker Composeを使って、複数のコンテナを同時に稼働させます。
はじめに、Amazon Web Serviceの仮想クラウドサーバEC2のインスタンスを起動します。インスタンスの手順は、前回の連載を参照してください。なお、EC2インスタンスのスペックによってはMongoDBが起動できない場合もありますので、t2.small以上のものを使ってください。
EC2インスタンスが起動したら、リモートログインします。EC2のホームディレクトリに「letschat」という名前の作業ディレクトリを作成し、そこにDocker Compose用の構成管理ファイルであるdocker-compose.ymlを以下のように作成します。
$ mkdir letschat && cd $_ $ touch docker-compose.yml $ ls docker-compose.yml
続いて、docker-compose.ymlを次のように記述します。
app:
image: sdelements/lets-chat
links:
- mongo
ports:
- 80:8080
- 5222:5222
mongo:
image: mongo:latest
ここでは、Let's Chatを動作させるフロントサーバを「app」という名前、MongoDBによるデータベースサーバを「mongo」という名前でそれぞれコンテナ起動します。
docker-compose.yml の用意ができたら、docker-compose upコマンドを実行し、コンテナを起動します。起動すると、Let's Chat用コンテナ、MongoDBコンテナの2つのコンテナが起動します。Let's Chat用コンテナは、80番ポートで外部ネットワークと接続します。
$ sudo /usr/local/bin/docker-compose up docker@boot2docker:~/letschat$ docker-compose up Creating letschat_mongo_1... Creating letschat_app_1... Attaching to letschat_mongo_1, letschat_app_1 mongo_1 | 2015-07-10T04:30:23.726+0000 I JOURNAL ~中略~ app_1 | > lets-chat@0.4.1 prestart /usr/src/app ~中略~
