はじめに
GitLab Pagesへ公開するビルドには publysher/hugo を使ってたのだが、新しいオレオレDockerイメージを作ってDockerHubにアップロードしてみた。
publysher/hugo は素のDebian(wheezy)にHugoのバイナリを入れただけのシンプルなイメージだったのでちょっと物足りない。今まではGitやImageMagickをビルド時に追加インストールしてだましだまし使ってたのだが、pngquantを入れようと思ったらjessieが必要とのことでようやく重い腰を上げてみた。
ちなみに、ImageMagickからpngquantとjpegtranを使うようにしたのだが、詳しい説明は ここ や ここ を参照。
DockerHubへの登録の仕方は色々なところで公開されているので、ここでは簡単にUbuntuへDockerをインストールさせてDockerfileを作ってDockerHubにアップロードするまでを簡単に記録しておく。
ちなみに環境は jessie/sid
な Ubuntu/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へのオレオレイメージの登録は、思っていたほど面倒じゃなかった。