Docker で Growthforecast をインストールする方法
ちょいちょい GrowthForecast のインストールが perl だから難しいとかいってる人をみかけるけれど、Dockerfile が用意してあれば、セットアップは簡単になるんじゃないだろうか。
audreyt が Dockerfile で配布する方法で irc logger を配布していたし、それを真似してみるのもアリかもしれない。そんな風におもって僕もやってみることにした。
Docker をつかうと、アプリをふくんだイメージを簡単に配布することが可能となる。インストール手順をごちゃごちゃとブログに書いたりするのもいいけれど、Dockerfile を共有したほうがいいのではないだろうか。再現可能だし。chef でもなんでもいいけど、docker はインストールが簡単なのがいいし、覚えることがすくなくていい。
いらなくなったら、イメージごとポイすればいいだけで、簡単だしね。
さて本題、今回ぼくは GrowthForecast をインストールするための Dockerfile を以下のように記述してみた。
cat Dockerfile
# DOCKER-VERSION 0.3.4
FROM ubuntu:quantal
RUN apt-get install -y librrd4 librrds-perl curl build-essential
RUN curl -L http://cpanmin.us | perl - App::cpanminus
RUN apt-get install -y libdbd-sqlite3-perl libwww-perl
# build-dep rrdtool
RUN apt-get install -y groff autotools-dev gettext quilt zlib1g-dev libpng12-dev libcairo2-dev libpango1.0-dev libfreetype6-dev libdbi0-dev libxml2-dev
RUN cpanm --notest File::Which File::chdir File::ShareDir
RUN cpanm --notest --installdeps Alien::RRDtool
RUN cpanm --notest --verbose Alien::RRDtool
RUN cpanm --notest GrowthForecast
EXPOSE 5125
RUN growthforecast.pl
こまかく RUN ががわかれてるのは、途中から再開しやすくするためと、なんか長い時間かかるコマンドを実行してるとたまにエラーになったためです(たぶん Docker のバグかな)。
このファイルを Dockerfile という名前で保存しておいて、docker build -t tokuhirom/growthforecast .
とかすると、そのうち growthforecast が起動する。別のターミナルで docker ps
とうつと以下のような表示がでる。
ID IMAGE COMMAND CREATED STATUS PORTS
c13f6636274b 7f277a89d25e /bin/sh -c growthfor 9 minutes ago Up 9 minutes 49153->5125
gf のデフォルトポートである 5125 ポートが、親ホストの 49153 ポートにマッピングされてるんで、ここにアクセスすればいいだけ。簡単。
イメージをアップロードしてもよかったんだけど、メンテナンスする気とかはとくにないので、誰かやる気のある人がアップしたらいいとおもいます。
このエントリーでなにをいいたいかというと、Perl5 でできたアプリケーションも、Dockerfile 形式で配布すれば Perl5 に馴染がない人でも簡単にインストールできるようになるよ、ってこと。そして、perl5 のアプリケーションを Dockerfile でセットアップするのはすごく簡単だよってこと。
そういうわけで、単体のミドルウェアとして実行するようなアプリケーションの場合には、こういう形式で配布してみるのもいいんじゃないでしょうか。という提案エントリーなのでした。