CentOS 7 で Hubot on Docker をやってみたメモ
Docker こんなに流行っているのに、前職の後輩たちもみんな使っていたのに、俺使っていなかったー
まぁ言い訳言うと、ライン管理職とかプロジェクトマネージャーとか、サービス企画とかがお仕事だったんで、必要なかったからということがあるんですが…
Hubot も Docker も何もやったことなかったし、メモってないのでうろ覚えでメモる
間違ってたら後で直せばいいやん
Contents
事前準備と環境
- ConoHa の 900 円プラン で CentOS 7.2 をセットアップ済み
- Docker のインストールは済ませておく >>前の日記参照
- Hubot を動かす Slack チームを作成、API の Token を取得しておく
目標
- いくつかの Slack に Hubot を参加させる
- Hubot ごとにコンテナを起動させる
手順
Hubot を動かすため、node.js の環境を用意する
ここでは Docker Hub にある公式のイメージを利用した
$ docker pull node
image の確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/node latest 2c06219661ed 8 days ago 644.2 MB
コンテナの起動
node.js のイメージを使い起動
$ 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 用イメージを作成する
Dockerfile から image の作成
$ 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
image の確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
bot-base latest c64050988afd 18 minutes ago 698.8 MB
作ったイメージの削除方法
image の削除例
$ docker rmi bot-base:latest # 又は docker rmi c64050988afd でも可
Untagged: bot-base:latest
Deleted: c64050988afde89c14b937c6c1382a984b1a676e10b0a96bb1566a98ba23621e
Deleted: ef4964132a7f637a3862086cc64ffce53a5acd0d6a459d9a338e24ce98de96b7
Deleted: e7cec4828b1aa52b9840fe8cf099ee43d36ed802c68936c113ecc822a0882715
Deleted: cf0c4e3fff369b137cf68839abdc2869266cb846a9bbc247e4b517c667936d9e
Deleted: 5a6f64bcca492dc861035ed78cb3e8916a3e584832fdd0874f2482cc637a54b4
Deleted: f3f7ed898049035d93d38b951e012644abe8463b72efca2409aea8769c03cf26
Deleted: fa599f410d58049a73f9ea39e86fda7c50deb5b386d98be286f21ff0effeb225
作ったイメージを使って起動する
Hubot が載ったイメージを起動
$ docker run -itd -v /etc/localtime:/etc/localtime:ro -e "HUBOT_SLACK_TOKEN=slackから取得したtoken" --name "作成するコンテナ名" bot-base /bin/sh
ディスカッション
コメント一覧
まだ、コメントがありません