LoginSignup
13
12

More than 5 years have passed since last update.

IRC+HubotをDockerでサクッと試す

Last updated at Posted at 2014-08-21

Dockerで立てたIRCに、Dockerで立てたHubotを常駐させますよ、という話

コンテナの相互関係

+---------------------+
|goldeneggg/centos    |
| +------------------------+
+-| goldeneggg/centos-ngircd     +-----------------------------+
  |                        <-----+   goldeneggg/hubot-irc      |
  +------------------------+     |                             |
                                 |                             |-+
                                 +-----------------------------+ |
                                    | goldeneggg/hubot           |-+
                                    +----------------------------+ |
                                        |dockerfile/nodejs         |
                                        +--------------------------+

IRCサーバー (=ngircd)

Hubot

hubot-irc

  • goldeneggg/hubot-irc Repository | Docker Hub Registry - Repositories of Docker Images
  • 上記のhubotコンテナをベースコンテナとして使用
  • このコンテナでやること
    • hubot-ircをインストール(npm install)
    • hubot-ircで必要な環境変数の設定
      • HUBOT_IRC_NICK
      • HUBOT_IRC_UNFLOOD
      • HUBOT_IRC_SERVER, HUBOT_IRC_ROOMSの2つも必要だが、IRCの実行状態に依存するのでdocker run -e <ENV>で指定することにした
    • 上記hubotコンテナで作成したbotをircモードで起動
  • ※ irc以外のアダプタを追加したい場合は、接続先だけircから変更して同じような構成をコンテナを作成すれば良い(と思う)

実行&動作確認

  • ircサーバーを起動する
    • デフォルトで #Testというチャンネルを用意している
$ docker pull goldeneggg/centos-ngircd
$ docker run -t -d -p 6667:6667 goldeneggg/centos-ngircd
  • 任意のircクライアントでircに接続する
    • サーバー : コンテナが動いてるホストマシンのIP/ホスト名
    • ポート : 6667
    • チャンネル : #Test
  • ircコンテナのipアドレスを確認する
$ docker inspect <IRC_CONTAINER_ID> | grep IPAddress

        "IPAddress": "172.17.0.46",
  • hubotをircにjoinさせる
$ docker pull goldeneggg/hubot-irc
$ docker run -e HUBOT_IRC_SERVER=<ircコンテナのIPアドレス> -e HUBOT_IRC_ROOMS=#Test \
  -t -d goldeneggg/hubot-irc
  • hubotの動作状況をpingで動作確認 => PONGが返ってくればOK
> @hubot ping
PONG
  • 追加した独自scriptの動作確認。sushiという文字列に反応してネタを返す
> sushi
はまち
13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12