プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2021/05/21

Rocket.Chat を docker で動かす

update2021/08/13 event_note2021/05/21 4:15

公式の Rocket.Chat の Docker イメージを使って動かしてみましたが、結構苦労したのでメモしておきます。

環境

  • Windows 10
  • Docker Desktop 3.3.3

docker-compose.yml

Rocket.Chat と MongoDb は docker-compose を使って起動しました。

以下、記述例です。

version: '2'
services:
  rocketchat:
    container_name: rocketchat
    image: rocketchat/rocket.chat:latest
    command: >
      bash -c
        "for i in `seq 1 30`; do
          node main.js &&
          s=$$? && break || s=$$?;
          echo \"Tried $$i times. Waiting 5 secs...\";
          sleep 5;
        done; (exit $$s)"
    restart: unless-stopped
    volumes:
      - uploads:/app/uploads
    depends_on:
      - mongo
    ports:
      - 3000:3000
    environment:
      - PORT=3000
      - ROOT_URL=http://localhost:3000
      - MONGO_URL=mongodb://mongo:27017/rocketchat
      - MONGO_OPLOG_URL=mongodb://mongo:27017/local
      - TZ=Asia/Tokyo

  mongo:
    container_name: rocketchat-mongo
    image: mongo:4.0
    restart: unless-stopped
    volumes:
      - db:/data/db
      - dump:/dump
    command: mongod --smallfiles --oplogSize 128 --replSet rs0

volumes:
  uploads:
  db:
  dump:

起動後にすること

ここが一番はまったところですが、docker-compose で起動するだけではアクセスできず、mongoDb でレプリカの登録を行ったらアクセスできるようになりました。

まず mongodb のコンテナに入ります。

$ docker exec -it rocketchat-mongo bash

mongodb に接続します。

$ mongo --host localhost:27017

レプリカを登録します。

> rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "localhost:27017" } ]})

スレーブを許可?します。

> rs.slaveOk()

終了します。

> exit

これで docker-compose 再起動後に Rocket.Chat にアクセスできました。