dockerでhubot + slack

  • 62
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

Slack 用の bot を Hubotdocker を使ってつくったのでメモ

Dockerfile

Dockerfile
FROM node:latest

MAINTAINER nabe

RUN npm install -g hubot coffee-script
RUN npm install hubot-slack --save

RUN hubot --create bot

ADD hubot-scripts.json /bot/hubot-scripts.json
ADD package.json /bot/package.json
ADD scripts/hello.coffee /bot/scripts/

ENV REDIS_URL redis://localhost:6379

ENV HUBOT_NAME @bot
ENV PORT 9999

ENV HUBOT_SLACK_TOKEN <yourtoken>
ENV HUBOT_SLACK_TEAM <yourteam>
ENV HUBOT_SLACK_BOTNAME bot
ENV HUBOT_SLACK_CHANNELMODE whitelist
ENV HUBOT_SLACK_CHANNELS test

EXPOSE 9999

CMD cd /bot; bin/hubot --adapter slack

HUBOT_SLACK_TOKEN は Slack から取得します

ちなみに、HUBOT_SLACK_CHANNELMODE で whitelist を指定しているので、HUBOT_SLACK_CHANNELS で設定した #test チャンネルしか受け付けなくなっています

設定ファイル

Dockerfile と同じディレクトリに作成します

hubot-scripts.json
["redis-brain.coffee"]
package.json
{
  "name": "hosted-hubot",
  "version": "2.7.1",
  "private": true,

  "author": "GitHub Inc.",

  "keywords": [
    "github",
    "hubot",
    "campfire",
    "bot"
  ],

  "description": "A simple helpful robot for your Company",

  "licenses": [{
    "type": "MIT",
    "url": "https://github.com/github/hubot/raw/master/LICENSE"
  }],

  "repository" : {
    "type": "git",
    "url": "https://github.com/github/hubot.git"
  },

  "dependencies": {
    "hubot":         ">= 2.6.0 < 3.0.0",
    "hubot-scripts": ">= 2.5.0 < 3.0.0",
    "hubot-slack":   ">= 2.2.0"
  },

  "engines": {
    "node": ">= 0.8.x",
    "npm":  ">= 1.1.x"
  }
}

scripts

Dockerfile のあるディレクトリに scripts/ を作成して、テスト用のスクリプトを設置します

hello.coffee
# Description:
#   Test
#
# Commands:
#   hubot hello - Say "Hi"

module.exports = (robot) ->
  robot.respond /HELLO$/i, (msg) ->
    # robot.brain.set msg.message.user.name, "test"
    msg.send "Hi"

動かす

あとは、Dockerfile のあるディレクトリで以下を実行すればコンテナが起動して Slack のメッセージに反応するようになります

docker build -t bot .
docker run -d -p 9999:9999 --env REDIS_URL=redis://<host>:6379 bot

Redis の URL を指定すれば、メッセージを保存したりできます(コメントアウトしているやつを参考に)

Redis 使わない場合は Dockerfile などをよしなに修正してください

ちなみに、Redis も docker を使えば簡単に用意できます

docker run -d -p 6379:6379 -v <dir> redis redis-server --appendonly yes