Date January 15, 2017
Tags docker / pelican
Share このエントリーをはてなブックマークに追加

このサイトを作るのに使っている静的サイトジェネレーターのPelicanをDocker for Macで動かせるようにDockerfileを書きました。

whale pelican
flickr photo shared by jkirkhart35 under a Creative Commons ( BY ) license

最近メインのMBPにmacOS Sierraをクリーンインストールしたのですが、それをきっかけにDocker for Macを使ってみることにしました。

というわけでPelican用のDockerfileを作ってみます。DockerコンテナにPelicanの環境が閉じていればいろんなマシンで同一のPelicanを動かすことができるようになるので便利かなと。

目標はDockerコンテナからpelicanのMakefileを叩いて一通りの作業ができることです。Pelicanには開発用のWebサーバがついてるので、そこに外部から接続できるようにしたいと思います。余計なものも入れない方針で。

まず最初に調べてみたのはDocker Hubです。先人たちが既に用意してくれてるなら利用しない手はないので。

しかしリストされてるものを上から順にいくつかみたのですがどうにもピンと来ません。一回HTML生成して終わりとか、自作のスクリプトが同梱されてるとかちょっと微妙だったので、参考にしながらも自分で作ってみることにしました。

FROM alpine:3.4

RUN echo -e "@edge http://nl.alpinelinux.org/alpine/edge/main\n@testing http://nl.alpinelinux.org/alpine/edge/testing\n@community http://nl.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories

RUN apk -U add --no-cache \
    python \
    python3 \
    perl \
    make \
    bash \
    && apk -U add --no-cache --virtual deps \
        py-pip \
    && pip install --upgrade pip \
    && pip install pelican==3.6.3 markdown \
    && apk del --purge deps

EXPOSE 8000
WORKDIR /site
ENTRYPOINT ["bash"]


とりあえず基本はalpineでいきます。リポジトリを設定してapkで色々取ってくるっぽいです。以下の記事も参考にさせてもらいました。

make devserverの為にbashが必要でした。pipでpelicanとmarkdownを入れます。Pelicanは最新バージョンだとなぜか今のテーマの表示が崩れたので、バージョンを指定しています。

開発サーバのためにポートを指定します。デフォルトでは8000です。作業ディレクトリとコンテナ起動時に実行するコマンドも設定しておきます。

コンテナのビルドと起動は以下です。Dockerfileをpelicanconf.pyなどがあるディレクトリに置くのを想定しています。カレントディレクトリをコンテナ内の/site以下にマウントしてローカルの8000番ポートをコンテナにバインドします。

docker build -t pelican .
docker run --rm -it -v $(pwd):/site -p 8000:8000 pelican


コンテナを起動するとbashが立ち上がるのでそのままmake devserverとかできます。localhost:8000に接続すると開発サーバが生成されたHTMLを返すはずです。

お疲れ様でした。


Comments

comments powered by Disqus