はじめに

このブログは静的サイトジェネレーターのHugoを使っています。

当初はMacにインストールしたHugoでブログを生成し、S3にアップすることだけを考えていました。

しかし、Macがない環境でのアップも想定し、BitbucketのPipelinesを使用して、Git pushの度にHugoを実行させることにしました。

PipelinesではDockerコンテナを使用してビルドを行いますが、ベースとなるOSイメージは軽量と評判のAlpine Linuxを使用することにしてみました。

問題

Alpine Linuxではapkというパッケージマネージャーを使用してパッケージをインストールすることができます。

Hugoもapkでインストールできます。

$ apk add hugo

ところが、この場合インストールされるバージョンは安定版の0.18となりました。

使いたいブログテーマで要求されるバージョンは最新(非安定)版の0.19だったので、これでは使えません。

調べたところ、edgeブランチであれば0.19をインストールすることができるとわかりました。 ちなみに、apkでインストールできるパッケージとバージョン、ブランチ、リポジトリ等は下記で調べることができます。

Alpine packages

edgeブランチのパッケージはデフォルトのリポジトリではインストールできないので、リポジトリを追加する必要があります。

リポジトリを管理するファイルは下記です。

/etc/apk/repositories

ここにリポジトリを追記します。

$ echo http://dl-cdn.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories

さらにバージョンを指定します。

$ apk add hugo=0.19-r0

これで、最新版をインストールできました。

上記の処理を含めたDockerfileがこちらです。

FROM golang:alpine
ENV LANG ja_JP.UTF-8

RUN echo http://dl-cdn.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories

RUN apk update && \
        apk upgrade && \
        apk --no-cache add --update\
        git \
        hugo=0.19-r0

まとめ

  • Dockerに適した軽量OSの一つにAlpine Linuxがある。
  • Alpine Linuxはapkを使用してパッケージ管理を行う。
  • 安定版ではないedgeブランチのパッケージはリポジトリを追加する必要がある。

参考サイト