Docker Composeを使ったRocketChatのインストールと基本的な使い方:OSSチャット基盤RocketChat入門(2)(1/3 ページ)
OSSのチャット基盤であり、Dockerコンテナとして簡単に導入できるRocketChatを使った、コミュニケーション基盤の作り方を学ぶ本連載。今回は、実際にRocketChat環境を構築し、アカウント登録やチャットなどの基本的な使い方について解説します。
本連載「OSSチャット基盤RocketChat入門」では、OSSのチャット基盤でありDockerを使って簡単に構築ができるRocketChatを使って、コミュニケーション基盤の作り方を学びます。
前回の「Slackと違ってオンプレミス環境で作れるOSSチャット基盤4選&RocketChatの基礎知識」では、本連載で取り上げるRocketChatと、そのベースとなるSlackとの違い、その他のオープンソースソフトウェア(OSS)チャットツールを紹介しました。今回は、実際にRocketChat環境を構築し、アカウント登録やチャットなどの基本的な使い方について解説します。
RocketChat環境の概要
初めに、これから作るRocketChat環境の概要を紹介します。今回は、Linux環境(CentOS)上に構築し、Docker 1.12.1上で動作させるものとします。なお、以降に記載するLinuxコマンド操作は、全て特権ユーザーで実行します。
今回使用するプロダクトおよびバージョンは表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
# 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
今回作るRocketChat環境の概要は図1の通りです。
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/
ログイン画面が表示されたら、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を使用するようにしてください。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- チャットアプリ開発に見る、Socket.IOの基本ライブラリの使い方
本連載では、WebSocketを扱えるNode.jsのライブラリ「Socket.IO」の使い方について解説します。今回は、チャットアプリ開発を例に、双方向通信、ブロードキャスト送信、個別送信などを実装する際のSocket.IOの使い方について。 - 無料でLINEやSkypeのようなリアルタイムアプリが簡単に作れるSkyWay
HTML5関連のPtoP技術通信として注目のWebRTCを、JavaScriptだけで手軽に使えるプラットフォーム「SkyWay」と、その中核となるライブラリ「PeerJS」の概要と基本的な使い方を解説します。 - ユーザー解析機能が無料になったFirebaseの使い方超入門
Firebaseのデータベース機能を使って無料のチャットアプリを作ることで、FirebaseやFirebase Analyticsの使い方について解説します。