フロッピーディスクの残骸

フロッピーディスクを分解するのって楽しいよね

HubotのSlackインテグレーションをDockerでやる

n番煎じになっちゃいますが、
Slackと連携するHubotをDocker上で動かします。

いろんな人のDockerfileを見てると - centos6をベースに作成 - nodeをベースにして作成 しているようです。 nodeをベースに作成してもいいんですが、
それだとvimとか入ってないので、開発しづらいかなあ。
centos6も7もそんな変わらん気がするけど、
centos7をベースにDockerfileを書いてみます。

Dockerfile

FROM centos:7
RUN yum update -y
RUN yum install -y vim
RUN yum install -y epel-release
RUN yum install -y nodejs npm

RUN npm install -g yo generator-hubot coffee-script hubot-slack

RUN useradd -d /home/hubot -m -s /bin/bash -U hubot
USER hubot
WORKDIR /home/hubot
RUN yo hubot --owner "328" --name "bot name" --description "Hubot Slack" --adapter slack

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

docker-compose.yml

docker-compose書いておくと、環境変数増えた時に楽になるので、一応書いてます。

hubot-slack:
  build: ./
  volumes:
    - /etc/localtime:/etc/localtime:ro
  environment:
    - HUBOT_SLACK_TOKEN=hogehoge
    - HUBOT_SLACK_TEAM=teams.slack.com
    - HUBOT_SLACK_BOTNAME=botname

コンテナの時刻をホスト側と合わせるために、/etc/localtimeをread onlyでmountしてます。

ソースはGithubに置いてます。

github.com

動作チェック

$docker-compose build
$docker-compose up -d

slackのhubotにpingを送るとpongと返ってくるはずです。

参考