LoginSignup
16
19

More than 5 years have passed since last update.

CentOS 7.2 で Hubot を Docker で動かしてみた

Last updated at Posted at 2016-04-10

ブログ2つを纏めた転載


新しく契約したサーバーに CentOS 7.2 を入れたので、Docker 入れて Hubot を試してみた
多くの人がやって掲載してるけど、自分のメモとして書く

Docker のインストール

まずはインストールですが、CentOS 7.x からはデフォルトのリポジトリにあるので yum でインストールが可能

$ sudo yum install doker
$ sudo systemctl start docker
$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

一般ユーザーで利用できるように設定

次に、一般ユーザー(miyamiya)が docker を使えるようにしました

$ sudo groupadd docker
$ sudo gpasswd -a miyamiya docker
Adding user miyamiya to group docker
$ sudo systemctl restart docker

一旦ここでログアウトして、ログインし直しました

ちなみにこの手順を取らないで一般ユーザで実行すると下記のようにエラーとなる

$ docker pull node
Using default tag: latest
Post http:///var/run/docker.sock/v1.20/images/create?fromImage=node%3Alatest: dial unix /var/run/docker.sock: permission denied.
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

Slack チームの作成と API Token の取得

か、か、割愛... (メモってないw

node.js の環境を準備

Hubot は node.js で動作するので、node.js の環境を準備する
node.js 公式のイメージを利用する

イメージの取得

$ docker pull node

確認

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/node      latest              2c06219661ed        8 days ago          644.2 MB

コンテナの起動

$ docker run --rm -it -v /etc/localtime:/etc/localtime:ro --name "bot-base" node /bin/sh

オプションの説明

  • --name "bot-base"
    コンテナ名は bot-base
  • node
    使うイメージは node.js
  • -v /etc/localtime:/etc/localtime:ro localetime はホストと Readonly で共有する(日本の時間にする)
  • -it , /bin/sh
    起動後シェルに入る
  • --rm
    落とした時にコンテナを削除する

コンテナ起動後

  • Ctrl+p, Ctrl+q でコンテナから抜ける
  • exit で抜けたらコンテナは削除される(--rm をつけているため)

--rm をつけずにコンテナを手動で削除するとき

起動中のコンテナを確認

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2f12ee8929bb        bot-base            "/bin/sh"                  5 days ago          Up 5 days                               bot-base

コンテナの停止

$ docker stop bot-base
bot-base

コンテナの削除

$ docker rm bot-base
bot-base

Hubot を動かせるまでひたすら頑張る

次の事ができるまで、試してみてメモって、またコンテナ最初からやってみてを繰り返した

  • Hubot Generator をインストール
  • Hubot を作成
  • Hubot を起動

これを元にして Dockerfile を作った

Dockerfile
FROM node
MAINTAINER miyamiya

RUN npm install -g yo generator-hubot
RUN npm list -g yo generator-hubot
RUN useradd bot
RUN mkdir /home/bot && chown bot.bot /home/bot

USER bot
WORKDIR /home/bot
RUN  yo hubot --owner "miyamiya" --name "bot" --description "Hubot image" --adapter slack

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

Hubot 用イメージを作成する

$ docker build -t bot-base .
Sending build context to Docker daemon 4.096 kB
Step 1 : FROM node
 ---> 2c06219661ed
Step 2 : MAINTAINER miyamiya
 ---> Using cache
 ---> 6cd0fb4b3b24
Step 3 : RUN npm install -g yo generator-hubot
 ---> Using cache
 ---> 86f522f924ca
  :
(省略)
  :
npm info ok 
 ---> ef4964132a7f
Removing intermediate container 2464b01dd061
Step 10 : CMD bin/hubot --adapter slack
 ---> Running in 2d797a7465fd
 ---> c64050988afd
Removing intermediate container 2d797a7465fd
Successfully built c64050988afd

作ったイメージの確認

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
bot-base            latest              c64050988afd        18 minutes ago      698.8 MB
docker.io/node      latest              2c06219661ed        8 days ago          644.2 MB

作ったイメージの削除例

$ docker rmi bot-base:latest
Untagged: bot-base:latest
Deleted: c64050988afde89c14b937c6c1382a984b1a676e10b0a96bb1566a98ba23621e
Deleted: ef4964132a7f637a3862086cc64ffce53a5acd0d6a459d9a338e24ce98de96b7
Deleted: e7cec4828b1aa52b9840fe8cf099ee43d36ed802c68936c113ecc822a0882715
Deleted: cf0c4e3fff369b137cf68839abdc2869266cb846a9bbc247e4b517c667936d9e
Deleted: 5a6f64bcca492dc861035ed78cb3e8916a3e584832fdd0874f2482cc637a54b4
Deleted: f3f7ed898049035d93d38b951e012644abe8463b72efca2409aea8769c03cf26
Deleted: fa599f410d58049a73f9ea39e86fda7c50deb5b386d98be286f21ff0effeb225

又は docker rmi c64050988afd でも可

作ったイメージを使って起動する

$ docker run -itd -v /etc/localtime:/etc/localtime:ro -e "HUBOT_SLACK_TOKEN=slackから取得したtoken" --name "作成するコンテナ名" bot-base /bin/sh

Slack で話しかけてみた

hubot_example.png

16
19
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
16
19