追記(2015/09/26):
herokuのdocker-compose対応に伴ってdocker:startコマンドが無くなりました。
hubotについては書いていませんが、最新のheroku+dockerの連携方法についてはこちらの記事を参照してください。
-- 追記ここまで
herokuの無料プランが1日18時間になって、どこでhubotを動かすか悩んでいる方も多いのではないでしょうか。
そこで、herokuがdockerに対応したことを利用し、herokuでもその辺のサーバでも動くhubot入りコンテナを準備したいと思います。
前提として、ローカル環境には、以下がインストールされているものとします。
- docker
- hubot
- generator-hubot
- heroku-toolbelt
参考:
Slack で Hubot を使えるようにする
Docker + Yeoman + Hubot + Slack で簡単bot作成
まずは新しくhubotを作ります。
mkdir test-hubot && cd test-hubot
yo hubot
いろいろ聞かれるので、適宜答えてください。
処理が終わると、hubot関係のファイルが展開されているはずです。
今回はadapterをslackにするので、API Tokenを調べておきましょう.
参考:SlackのHubot Integrationが知らぬ間にアップデートされてた
.envというファイルを以下の内容で作成します。
HUBOT_SLACK_TOKEN=XXXX
XXXXは、さっき調べたAPI Tokenで置き換えてください。
次に、Dockerfileを準備します。
まずherokuのdockerプラグインを導入します。
heroku plugins:install heroku-docker
以下のコマンドでDockerfileが生成されます。
heroku docker:init
あとはdocker:startでhubotが動きます。
heroku docker:start
slackからpingと入力して動作確認してみましょう。
PONGと返って来れば、正しく動作しています。
これで、heroku-toolbeltとdockerがあればhubotがどこでも動くようになりました。
では、herokuにデプロイしてみましょう。
heroku create --app HOGEHOGE
heroku config:add --app HOGEHOGE HUBOT_SLACK_TOKEN=XXXX
heroku docker:release --app HOGEHOGE
もういちどslackからpingと入力してPONGと返って来れば、heroku上でhubotが動いています。
お手軽ですね。