iPhoneで Grafanaの グラフを 参照できる アプリ Grafanizer 作ってます。 詳しくは こちらへ

はじめに

GitLab Pagesへ公開するビルドには publysher/hugo を使ってたのだが、新しいオレオレDockerイメージを作ってDockerHubにアップロードしてみた。

publysher/hugo は素のDebian(wheezy)にHugoのバイナリを入れただけのシンプルなイメージだったのでちょっと物足りない。今まではGitやImageMagickをビルド時に追加インストールしてだましだまし使ってたのだが、pngquantを入れようと思ったらjessieが必要とのことでようやく重い腰を上げてみた。

ちなみに、ImageMagickからpngquantとjpegtranを使うようにしたのだが、詳しい説明は ここここ を参照。

DockerHubへの登録の仕方は色々なところで公開されているので、ここでは簡単にUbuntuへDockerをインストールさせてDockerfileを作ってDockerHubにアップロードするまでを簡単に記録しておく。

ちなみに環境は jessie/sidUbuntu/trusty です。

Dockerのインストール

Dockerのインストールについては 本家のインストールマニュアル どおりに進めて docker-engine が入れば問題なし。

DockerHubへのユーザー登録

DockerHubへのユーザー登録も特に難しいところはなく こちら にアクセスして新しいアカウントを登録し、届いたメールに従ってアクセスするだけ。

コンソールからDockerHubへログイン

Dockerをインストールしたマシンのコンソールで docker login する。これも特に問題なし。

Dockerfileを作成

いちからDockerファイルを作るよりどっかから似たようなDockerfileをコピーしてきた方が圧倒的に楽。

今回はそれまで使っていた publysher/hugo のDockerfileをコピーして、 下記のように書き換えただけ。

--- original.Dockerfile	Fri Jun 17 17:31:20 2016
+++ new.Dockerfile	Fri Jun 17 17:32:58 2016
@@ -1,8 +1,17 @@
-FROM debian:wheezy
-MAINTAINER yigal@publysher.nl
+FROM debian:jessie

-# Install pygments (for syntax highlighting)
 RUN apt-get -qq update \
-	&& DEBIAN_FRONTEND=noninteractive apt-get -qq install -y --no-install-recommends python-pygments \
-	&& rm -rf /var/lib/apt/lists/*
+	&& DEBIAN_FRONTEND=noninteractive apt-get -qq install -y --no-install-recommends apt-utils ca-certificates
+
+# Install git (for git submodule)
+RUN apt-get -qq update \
+        && DEBIAN_FRONTEND=noninteractive apt-get -qq install -y --no-install-recommends git-core
+
+# Install pngquanti, jpegtran (for image resize)
+RUN apt-get -qq update \
+        && DEBIAN_FRONTEND=noninteractive apt-get -qq install -y --no-install-recommends pngquant libjpeg-turbo-progs
+
+RUN rm -fr /var/lib/apt/lists/*

作ったDockerfileをビルド

アップロード前にビルド docker build -t [repository] . してイメージを作成しておく。

repositoryは ユーザーネーム/イメージ名 という感じでいい。今回はイメージ名を hugo にしておいた。ここではタグの指定はなくてもいいのだが、ここで指定しておかないと次のアップロードで送信先がわからず失敗するっぽい。

GitHubと連携させておけばイメージを作成しなくてもDockerfileがあれば自動ビルドしてくれるみたいだが、あいにくこちらの環境はGitLabなのでアップロード前には必ずビルドが必要。とはいっても、手を入れたDockerfileがきちんと動くのを確認するためにもビルドは必要だよね。

作ったDockerfileをアップロード

先ほどログインを済ませておいたDockerHubにイメージをアップロードするのだが、アップロードと言っても docker push [repository] だけでOK。

Dockerfileの内容を転記

アップロードまで完了すれば .gitlab-ci.yml で使えるようになるのだが、後からDockerファイルの内容を確認できるようにDockerHubのリポジトリにある Full Description へ記載しておく。

ここらへんはGitHubと連携させた時みたいに、Dockerfileの内容が自動的にアップロードされると分かりやすいだろうけど。


というわけで、なんとなく敬遠していたDockerHubへのオレオレイメージの登録は、思っていたほど面倒じゃなかった。