使用Docker搭建Rocket.chat,并将hubot与之集成
為了备忘录的目的,我将它放在这里。
※由于Docker和Hubot有其他详细的文章,所以我不再触及。
Rocket.chat是什么?
类似Slack的聊天工具。
https://rocket.chat/
大约一年前,我们在项目中引入聊天作为沟通工具时,寻找了一种服务器安装型的聊天工具,并最终选择了这一款。虽然周围没有人使用过,但我们还是先试用了一下。
总的来说,我们已经在项目中运营了大约一年半的时间。
Docker配方
rocketchat:
image: rocketchat/rocket.chat:latest
environment:
- MONGO_URL=mongodb://mongodb/rocketchat
- ROOT_URL=http://localhost:80
links:
- mongodb
ports:
- 80:3000
hubot:
image: rocketchat/hubot-rocketchat
environment:
- PORT=5080
- ROCKETCHAT_URL=[任意のドメイン]:80
- ROCKETCHAT_ROOM=
- LISTEN_ON_ALL_PUBLIC=true
- ROCKETCHAT_USER=[hubot用ユーザID]
- ROCKETCHAT_PASSWORD=[hubot用パスワード]
- BOT_NAME=[任意のhubot名]
- EXTERNAL_SCRIPTS=hubot-help,hubot-seen,hubot-links,hubot-diagnostics,hubot-reddit,hubot-bofh,hubot-bookmark,hubot-shipit,hubot-maps,hubot-cron,hubot-jenkins-notifier
- HUBOT_JENKINS_URL=[連携するjenkinsのURL]
- HUBOT_JENKINS_AUTH=[jenkinsのアカウント:パスワード]
volumes:
- /usr/local/share/hubot/scripts:/home/hubot/scripts
- /etc/localtime:/etc/localtime:ro
links:
- rocketchat:rocketchat
ports:
- 3001:5080
mongodb:
image: mongo
ports:
- 27017
volumes:
- /srv/docker/mongodb/db:/data/db
一本说明书
以下是用于在hubot内部执行Jenkins作业的配置。
- EXTERNAL_SCRIPTS=hubot-help,hubot-seen,hubot-links,hubot-diagnostics,hubot-reddit,hubot-bofh,hubot-bookmark,hubot-shipit,hubot-maps,hubot-cron,hubot-jenkins-notifier
- HUBOT_JENKINS_URL=[連携するjenkinsのURL]
- HUBOT_JENKINS_AUTH=[jenkinsのアカウント:パスワード]
为了保留日志而不受容器删除的影响,Rocket.chat的日志存储在mongoDB中,因此设置了挂载配置。当然,主机端的路径可以任意指定。
volumes:
- /srv/docker/mongodb/db:/data/db
在运用过程中出现的问题
身份证管理
在开发环境中同时运行了其他服务,因此在引入的聊天系统中再进行新的ID管理非常麻烦,是否有其他解决办法呢?
在这种情况下,我们决定将Rocket.Chat与我们已经在使用的Gitlab进行整合,因为Rocket.Chat已经具备与特定服务进行oAuth认证的功能。

Hubot容器崩溃了。
根据安装的插件,您可以让Hubot使用各种不同的命令。根据成员的使用情况来看,通知功能(任务注册)似乎被广泛使用。可以使用Cron格式进行注册,并且可以看到它们被用作午餐和例会等提醒功能的替代。
有一天突然,hubot停止响应,通过docker ps -a查看状态后发现hubot容器已经关闭。
通过docker logs命令输出日志,发现聊天室的所有历史记录都泄露出去了。
可能的原因可能是内存分配不足,我推测如此。
顺便提一下,Docker正在AWS的EC2上运行。
作为应对措施,使用”docker rm [容器名称]”删除了容器,并使用”docker-compose up -d”启动。
由于hubot所拥有的日志是不需要的,我们将其彻底删除。
如果只使用这种方法,那么之前在上述提及的通知功能中注册的所有任务都会消失,所以如果在核心操作中使用的话,可能需要对hubot容器进行额外的挂载到主机上之类的增加一些设想。