タイトルがそのままですが、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を有効にします。
そして、このURLをGitHubに入力します。新規のwebhookを追加し、Payloadに先ほどのURLをいれます。Secretは使わないので適当に入れました。今回はタグが作成された際にDocker Imageを作りたいので、Webhookを起動するイベントの「individual events」のラジオボタンを押し、出てきた中から、「Create」だけにチェックボックスをいれました。
あと、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モジュール)は、MinillaやShipItというツールで、タグの追加とCPANへのリリースを同時に行っていますが、上の例でGrowthForecastのインストールをCPANから行わずにgithubから取得しているのは、DockerのAutomated Buildがgit pushした瞬間から開始されて、CPANのインデックスの更新が追いつかずdocker build中に最新版が取得できない可能性があるからです。
どうぞご利用くださいませ。