使用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认证的功能。

キャプチャ.PNG

Hubot容器崩溃了。

根据安装的插件,您可以让Hubot使用各种不同的命令。根据成员的使用情况来看,通知功能(任务注册)似乎被广泛使用。可以使用Cron格式进行注册,并且可以看到它们被用作午餐和例会等提醒功能的替代。

有一天突然,hubot停止响应,通过docker ps -a查看状态后发现hubot容器已经关闭。
通过docker logs命令输出日志,发现聊天室的所有历史记录都泄露出去了。

可能的原因可能是内存分配不足,我推测如此。
顺便提一下,Docker正在AWS的EC2上运行。

作为应对措施,使用”docker rm [容器名称]”删除了容器,并使用”docker-compose up -d”启动。
由于hubot所拥有的日志是不需要的,我们将其彻底删除。

如果只使用这种方法,那么之前在上述提及的通知功能中注册的所有任务都会消失,所以如果在核心操作中使用的话,可能需要对hubot容器进行额外的挂载到主机上之类的增加一些设想。

广告
将在 10 秒后关闭
bannerAds