公式の 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 にアクセスできました。