LoginSignup
20
27

More than 5 years have passed since last update.

Docker ComposeでRocket.Chatを立ち上げる

Posted at

前の記事
CentOS7にDockerとDocker Composeをインストールする
に、Rocket.Chatを立ち上げました。

構築手順は以下のサイトのサイトを参考にしています。
Rocket.Chat Docs
Docker Composeを使ったRocketChatのインストールと基本的な使い方

補足で、自分が分からなかったところの説明を付け加えています。

事前準備

  • DockerとDocker Composeのインストール(前の記事参照)
  • VirtualBoxのポートフォワード設定(今回は3000:3000に設定) image.png

各コンテナイメージを取得する

  • MongoDBのイメージを取得
docker pull mongo
  • Rocket.Chatのイメージを取得
docker pull rocketchat/rocket.chat

Docker Composeファイルの作成

  • MongoDBのデータをホスト側にマウントするためのディレクトリを作成
mkdir -p /var/www/rocket.chat/data/runtime/db
mkdir -p /var/www/rocket.chat/data/dump
  • Docker Composeファイルを作成
vi /var/www/rocket.chat/docker-compose.yml
docker-compose.yml

version: '2'

services:
  rocketchat:
    image: rocketchat/rocket.chat:latest
    restart: unless-stopped
    volumes:
      - ./uploads:/app/uploads
    depends_on:
      - mongo
    ports:
      - 3000:3000

  mongo:
    image: mongo:latest
    restart: unless-stopped
    volumes:
     - ./data/db:/data/db
     - ./data/dump:/dump
    command: mongod --smallfiles --oplogSize 128 --replSet rs0

  mongo-init-replica:
    image: mongo:latest
    command: 'mongo mongo/rocketchat --eval "rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})"'
    depends_on:
      - mongo

私はローカルに立てたので、
今回はymlファイルにROOT_URLは設定しておらず、http://localhost:3000 になっています。
環境に応じてIPを変更する必要があります

Rocket.Chatの起動

cd /var/www/rocket.chat/
docker-compose up -d

そして、
http://localhost:3000/
に接続すると、Rocket.Chatが表示されました。

news019_02.jpg

補足

docker-compose.ymlの書き方

バージョンについて

参考:Compose ファイル・リファレンス
バージョン1とバージョン2(推奨)があります。

  • バージョン1
    composeファイルでバージョンを指定しないとき、バージョン1として認識される。今後廃止予定。

  • バージョン2
    冒頭でバージョンを指定する必要がある。services キーの下で全てのサービスを定義する。バージョン2のファイルは Compose 1.6.0 以上 でサポートされており、実行には Docker Engine 1.10.0 以上 が必要。

version: '2'
services:
  サービス名1: 
  build: .

  サービス名2:
    image: 

※ バージョン3もありそうだけど、今回は保留
参考:Compose file version 3 reference

depends_on

composeファイルは初めて書いたけど、基本的にdockerコマンドを叩くときのオプションとあまり変わらないんだなあという認識です。今回使ったものの中で、初めて見たdepends_onについてのみ調べました。
参考:Compose ファイル・リファレンス

  • depends_on
    サービスの依存関係を指定。この依存関係に従ってサービスの起動の順番が決まる。上のcomposeファイルを例に挙げると、docker-compse upを実行した場合、rocketchatとmongo-init-replicaはmongoに依存しているので、立ち上がる順番は①mongo→②rocketchat、mongo-init-replica。
    docker-compose up rocketchatとサービス名を指定して実行しても、依存関係があるので、mongoが立ち上がってからrocketchatが立ち上がる。

linkが高度になったものがdepends_onなのか?と思ったけれど、バージョン2ではそもそもlink機能は不要なものになっているよう。
参考:docker-compose depends_onとlinksの違い

docker-composeコマンド

docker-composeコマンド一覧(今回使ったやつだけ)

コマンド 説明
up ymlに定義されているサービスをすべて立ち上げる
run (サービス名) 指定されたサービスのみ立ち上げる
down ymlに定義されているサービスをすべて削除する
stop サービスをすべて停止する
start サービスをすべて開始する
ps コンテナの起動状態を確認する

up,run,startの違い

参考:よくある質問と回答

  • up
    一般的にはupを使う。upだと、composeファイルで定義されたすべてのサービスを起動させることができる。作成済みでないコンテナにも使える。
  • run
    指定されたサービスひとつだけ起動させる。だからrunの後ろにはサービス名が必要。
  • start
    すでに作成済みのコンテナのみに適用される。止まっているコンテナを開始するだけで、新しく作ることができない。

感想

  • ファイルさえ書けたら、あっというまにRocketChatが立ち上がったので、とても便利でした。
  • VirtualBoxの中でdockerを使ったら、ポートフォワードを2回しなければならないことに気づかず、そこで少し躓きました。
20
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
27