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