9
9

More than 5 years have passed since last update.

続:Docker でコンテナを立ち上げた時に Hubot を起動したい

Posted at

以前の記事 で、CMDを使って Hubot を起動することで、docker run -d時にコンテナを立ち上げるとともに Hubot が動くようになった。

しかしこの方法の場合、Hubot が何らかの時間のかかるタスクを実行すると、Hubot からの ping が帰ってこなくなって Slack とのコネクションが切られてしまう。そうすると、CMDで実行した Hubot の起動コマンドも終了することになり、結果コンテナも止まってしまうことになる。

forever

npm にある、コマンドを裏で実行し続けてくれるコマンド。これを使って以下のようにすると、Hubot が永続的に実行される。

forever でハマるポイントはここにまとまっている(http://qiita.com/kacky69/items/ee806b8c17bbd70ca55e)。

$ forever start -c coffee node_modules/.bin/hubot -a slack

ただし、forever は実行したいコマンドをバックグラウンドプロセスに回すだけで、このままではコマンドは正常終了してしまう。
つまり、CMDにこの文を突っ込んでも、コンテナ起動後にすぐ停止してしまう。

tail -f

そこで、CMDのコマンドの最後にtail -f somethingを入れる。


CMD forever start -o out.log -r err.log -c coffee node_modules/.bin/hubot -a slack; tail -f out.log

これでtail -fがフォアグラウンドになるので、docker run -d後もコンテナが起動したままになってくれる。

9
9
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
9
9