タイトルがそのままですが、GrowthForecastのDocker imageを作りました。

https://registry.hub.docker.com/u/kazeburo/growthforecast/

使い方は単純に起動するだけなら次のようになります。

$ docker run -p 5125:5125 kazeburo/growthforecast

これだと、データが永続化されないので、適当なボリュームをマウントします。

$ docker run -p 5125:5125 -v /host/data:/var/lib/growthforecast kazeburo/growthforecast

起動オプションを変更したい場合は、コマンドを渡すか、Dockerfileを書いてビルドすると良いでしょう。

$ docker run -p 5125:5125 -v /host/data:/var/lib/growthforecast kazeburo/growthforecast \
    growthforecast.pl --time-zone UTC --data-dir /var/lib/growthforecast

ヘルプの表示

$ docker run -i kazeburo/growthforecast growthforecast.pl -h

Dockerfileの例

FROM kazeburo/growthforecast CMD growthforecast.pl —time-zone Asia/Tokyo —data-dir /var/lib/growthforecast —front-proxy 0.0.0.0/0 ..

GitHubとDocker Hubを組み合わせてDocker imageの作成を自動化

このDocker imageはGitHubとDocker HubのAutomated Build Repositoryの機能を組み合わせて、GitHub上でタグが作れたのをフックして自動的に作られています。

Automated Build Repositoryを使うには、まずDocker Hub側で、ビルドを開始するためのTrigger URLを有効にします。

gf_gh_trigger.png

そして、このURLをGitHubに入力します。新規のwebhookを追加し、Payloadに先ほどのURLをいれます。Secretは使わないので適当に入れました。今回はタグが作成された際にDocker Imageを作りたいので、Webhookを起動するイベントの「individual events」のラジオボタンを押し、出てきた中から、「Create」だけにチェックボックスをいれました。

gf_hook_gh.png

あと、Dockerfileで最新のタグを指定してソースコードを取得し、インストールを行うようにしています。

RUN git clone -b $(curl -s https://api.github.com/repos/kazeburo/GrowthForecast/tags|jq -r '.[0].name') https://github.com/kazeburo/GrowthForecast.git /tmp/GrowthForecast
RUN cpanm -n --no-man-pages -v --no-interactive /tmp/GrowthForecast

GrowthForecast(や他のCPANモジュール)は、MinillaShipItというツールで、タグの追加とCPANへのリリースを同時に行っていますが、上の例でGrowthForecastのインストールをCPANから行わずにgithubから取得しているのは、DockerのAutomated Buildがgit pushした瞬間から開始されて、CPANのインデックスの更新が追いつかずdocker build中に最新版が取得できない可能性があるからです。

どうぞご利用くださいませ。

このブログ記事について

このページは、Masahiro Naganoが2014年6月26日 16:13に書いたブログ記事です。

ひとつ前のブログ記事は「VagrantのVMを使い捨てる。vagrant-destroy-provisionerをリリースしました」です。

次のブログ記事は「Heroku上でProcletを使っていろいろ動かすと便利」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja