MkDocsをDockerで気軽に動かす

Docker

はじめに

近ごろ仕事で、コンテナをデプロイするデモを実施することが多くなってきました。それなりにグラフィカルな方がわかりやすいけど、構築が簡単な方が嬉しいなあと思っていました。そうして小一時間考えてみたのですが、MkDocsしか思い浮かばなかったので、今回はMkDocsが気軽に使えるコンテナイメージを作ってみます。

MkDocsとは

MkDocsは、みんな大好きMarkdownで文書を書き、みんな大好きYAMLで設定を書けば、静的なサイトを生成してくれるPython製のソフトウェアです。ドキュメントはこちら。

MkDocs
Project documentation with Markdown.



MkDocsをコンテナで利用する

既存のコンテナイメージを使う

軽くググってみたところ、既存のコンテナイメージを使っている方がほとんどでした。特に理由がない場合、素直にこれを使うのがいいと思います。

Docker Hub

自分のコンテナイメージをビルドして使う

今回は久々にDockerfileを書きたくなったので、自分でコンテナイメージをビルドからやっていこうと思います。以下で紹介するファイルは、以下のGitHubリポジトリに置いてあります。適宜参照ください。

nishipy/mkdocs-on-container
Sample MkDocs on docker. Contribute to nishipy/mkdocs-on-container development by creating an account on GitHub.

テスト用の文書作成

テストなどで便利そうなので、予めコンテナイメージ内に文書を入れておくことにしました。ディレクトリは以下のようになっており、mkdocsを使う時のお馴染みの構成です。前述の通り、MarkdownとYAMLで書きます。

たったこれだけの設定で、以下のようなページが作れます。

ちなみにこのページは、GitHubのプロフィールを格好よくしたときに作ったMarkdownを使いまわしています。

GitHubのプロフィールが、Markdownで格好よくできるらしい
はじめにTwitterなどで、GitHubでプロフィールをマークダウンで書けるらしいと知りました。実際に作成してみたので、メモしておきます。Did you notice that we quietly launched GitHub...(続く)

Dockerfile作成

できるだけ軽量にするために、alpineのイメージをベースに作りました。MkDocsはpipでインストールできるので、とても楽ですね。

自明ですが、COPYのところで先ほど作ったテスト用の文書をコンテナ内に入れています。



コンテナイメージのビルドとコンテナ作成

この辺は、READMEに書いておきました。お馴染みのコマンドを打つだけです。

nisipyのプロフィール以外の文書を表示させたい場合は、-vオプションでマウントしてください。

ブラウザなどから、http://localhost:8000/にアクセスすれば、静的サイトにアクセスできるはずです。

さいごに

とても簡単に、楽しく、それっぽい静的サイトを構築することができました。コンテナ技術の開発者とMkDocsの開発者の方に足を向けて寝られません。

なお今回ビルドしたコンテナイメージは、GitHub Actionsを使ってDocker Hubにアップロードされるように設定しています。すぐ使いたい方は、こちらからPullしてみてください。

Docker Hub

以上。

コメント