連載
» 2016年09月29日 05時00分 公開

OSSチャット基盤RocketChat入門(2):Docker Composeを使ったRocketChatのインストールと基本的な使い方 (1/3)

OSSのチャット基盤であり、Dockerコンテナとして簡単に導入できるRocketChatを使った、コミュニケーション基盤の作り方を学ぶ本連載。今回は、実際にRocketChat環境を構築し、アカウント登録やチャットなどの基本的な使い方について解説します。

[伴地慶介,三菱総研DCS]

 本連載「OSSチャット基盤RocketChat入門」では、OSSのチャット基盤でありDockerを使って簡単に構築ができるRocketChatを使って、コミュニケーション基盤の作り方を学びます。

 前回の「Slackと違ってオンプレミス環境で作れるOSSチャット基盤4選&RocketChatの基礎知識」では、本連載で取り上げるRocketChatと、そのベースとなるSlackとの違い、その他のオープンソースソフトウェア(OSS)チャットツールを紹介しました。今回は、実際にRocketChat環境を構築し、アカウント登録やチャットなどの基本的な使い方について解説します。

RocketChat環境の概要

 初めに、これから作るRocketChat環境の概要を紹介します。今回は、Linux環境(CentOS)上に構築し、Docker 1.12.1上で動作させるものとします。なお、以降に記載するLinuxコマンド操作は、全て特権ユーザーで実行します。

 今回使用するプロダクトおよびバージョンは表1の通りです。

表1 プロダクト一覧
プロダクト名 バージョン
CentOS 7.2
Docker 1.12.1
MongoDB 3.2.9
RocketChat 0.37.1
Docker Compose 1.8.0
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
# uname -r -s -m
Linux 3.10.0-327.28.3.el7.x86_64 x86_64
OS:CentOS 7.2(x86_64)
# docker version
Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:
 OS/Arch:      linux/amd64
Server:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:
 OS/Arch:      linux/amd64
Docker:1.12.1

 今回作るRocketChat環境の概要は図1の通りです。

図1 RocketChat環境の概要

 RocketChatのデータを格納するためのデータベースです。

 本連載で取り上げるOSSチャット基盤です。

 複数のDockerコンテナを使用するアプリケーションを定義し、管理できるツールです。複数のDockerコンテナを1つのサービスとして扱うことができます。今回、RocketChatコンテナとMongoDBコンテナという2つのコンテナを使用するため、Docker Composeを使って1つのアプリケーションとして管理します。

RocketChat環境を作る

 それでは、実際にRocketChat環境を作っていきましょう。構築は以下の流れで行います。

  • 【1】MongoDBコンテナイメージを取得する
  • 【2】RocketChatコンテナイメージを取得する
  • 【3】Docker Composeのインストール
  • 【4】Docker Composeファイルを作成し、RocketChatを起動

【1】MongoDBコンテナイメージを取得する

 RocketChatのデータを格納するMongoDBのコンテナイメージをpullで取得します。

# docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
 
5c68a10e9f3f: Pull complete
0110f95fa9c8: Pull complete
0cba4a42bc41: Pull complete
a6eafd7fba3f: Pull complete
703d9d7e0e21: Pull complete
6c18d5bc22c9: Pull complete
fd3fcba178e3: Pull complete
c8b9b5488049: Pull complete
41f37d58ab4c: Pull complete
Digest: sha256:beff97308c36f7af664a1d04eb6ed09be1d14c17427065b2ec4b0de90967bb3f
Status: Downloaded newer image for mongo:latest
#

 MongoDBコンテナイメージがpullできたかは、「docker images」コマンドで確認できます。以下のように「mongo」が追加されていれば成功です。

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mongo               latest              af52553e1c34        3 days ago          327 MB
#

【2】RocketChatコンテナイメージを取得する

 RocketChatのコンテナイメージをpullで取得します。

# docker pull rocketchat/rocket.chat
Using default tag: latest
latest: Pulling from rocketchat/rocket.chat
 
357ea8c3d80b: Pull complete
cf5d621a220e: Pull complete
9f71cc4e09fc: Pull complete
2ac64b3dc65b: Pull complete
8f252f9e0a81: Pull complete
Digest: sha256:16da8ab5960101411df99fb99a9a7c4a8c881eb39f8bf53e79b3cb6ae6c824c9
Status: Downloaded newer image for rocketchat/rocket.chat:latest
#

 同じく、RocketChatコンテナイメージがpullできたか確認します。以下のように「rocketchat/rocket.chat」が追加されていれば成功です。

# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
rocketchat/rocket.chat   latest              d4cc7fb62744        3 days ago          405.2 MB
mongo                    latest              af52553e1c34        3 days ago          327 MB
#

 2つのコンテナイメージがpullされました。

【3】Docker Composeのインストール

 Docker Composeをインストールします。Docker Composeは、以下のコマンドでインストールできます。なお、「1.8.0」はインストールするDocker Composeのバージョンです。ここでは2016年8月時点の最新版をインストールしていますが、適宜インストールするバージョンを指定してください(最新版は「https://docs.docker.com/compose/install/」を参照)。

# curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   600    0   600    0     0    522      0 --:--:--  0:00:01 --:--:--   523
100 7783k  100 7783k    0     0   405k      0  0:00:19  0:00:19 --:--:--  583k
# chmod +x /usr/local/bin/docker-compose
# docker-compose -version
docker-compose version 1.8.0, build f3628c7
#

Tips 「DockerとDocker Composeのバージョン」

 Docker ComposeはインストールしているDockerと対応したバージョンをインストールする必要があります(https://github.com/docker/compose/releases)。

  • Docker Compose 1.5.2 → Docker 1.7.1
  • Docker Compose 1.6.0以降 → Docker 1.9.0 or later

 CentOS 6系を使用している場合、通常インストールされるDockerのバージョンは1.7系であるため、Docker Composeの最新版をインストールしてしまうと正しく動作しないことがあります。


【4】Docker Composeファイルを作成し、RocketChatを起動

 最後に、Docker Composeファイル(YAMLファイル)を作成し、RocketChatを起動します。まず、MongoDBのデータをホスト側にマウントするためのディレクトリを作成します。ここでは「/var/www/」配下に作成していますが、自身の環境に合わせて修正してください。

# mkdir -p /var/www/rocket.chat/data/runtime/db
# mkdir -p /var/www/rocket.chat/data/dump
#

 次に、Docker Composeファイルを作成します。「/var/www/rocket.chat/docker-compose.yml」を用意し、下記のように更新してください。

db:
  # コンテナイメージを指定(image:コンテナイメージ名:タグ名)
  image: mongo:latest
  # コンテナのデータをボリュームとしてホストOSにマウント
  volumes:
    # MongoDBのデータをマウント
    - ./data/runtime/db:/data/db
    # MongoDBのdumpファイルをマウント
    - ./data/dump:/dump
  # MongoDBのjournalファイルをsmallfilesとする
  command: mongod --smallfiles
 
rocketchat:
  # コンテナイメージを指定(image:コンテナイメージ名:タグ名)
  image: rocketchat/rocket.chat:latest
  # 環境変数を設定
  environment:
    # MongoDB(db)のURLを指定
    - MONGO_URL=mongodb://db:27017/rocketchat
    # RocketChatのURL(ここではホスト名をlocalhostとしています)
    - ROOT_URL=http://localhost
    # アカウントのメールアドレスのドメインチェックを無効化
    - Accounts_UseDNSDomainCheck=false
  # MongoDB(db)へのリンクを指定
  links:
    - db:db
  # RocketChatのポートを設定
  ports:
    - 3000:3000

 Docker Composeファイルを作成したら、いよいよRocketChatの起動です(正確に言うと、RocketChatコンテナとMongoDBコンテナを作成します)。

# cd /var/www/rocket.chat/
# docker-compose up -d
Creating rocketchat_db_1
Creating rocketchat_rocketchat_1
#

 コンテナが作成できたか確認します。「rocketchat_db_1」と「rocketchat_rocketchat_1」のStateが「Up」となっていれば成功です。

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

 作成できたら、以下URLアクセスし、RocketChatに接続してみましょう。

http://{IPアドレスまたはホスト名}:3000/
図2 RocketChatログイン画面

 ログイン画面が表示されたら、RocketChatの構築は完了です。

 なお、RocketChatは以下コマンドで起動/停止することができます。

# docker-compose start
Starting db ... done
Starting rocketchat ... done
#
起動
# docker-compose stop
Stopping rocketchat_rocketchat_1 ... done
Stopping rocketchat_db_1 ... done
#
停止

Tips 「CentOS 7系とDocker 1.10系でのMongoDBのディレクトリマウント時のエラー」

 CentOS 7では、デフォルトでyumを使ってDockerをインストールすることができます。しかし、ディストリビューションのリポジトリには最新版のDockerが配布されているとは限らないので、古いバージョンのDockerがインストールされることがあります。

 今回の環境であるCentOS 7.2においても、通常はDocker 1.10.1がインストールされてしまいます。しかし、CentOS 7.2とDocker 1.10.1では、環境構築時に、MongoDBでのディレクトリマウントの設定(./data/runtime/db:/data/db)で以下のエラーが出力され、MongoDBが起動できない事象が発生することが判明しています。

# docker-compose up
docker mongo chown: changing ownership of `/data/db`: Permission denied

 Dockerのバージョンが古いことに起因していますので、なるべく最新版のDockerを使用するようにしてください。


       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。