背景
Blogger に不満があるわけではないのですが、コードを整形して表示するのが面倒でした。そして、ここにきて突然その表示がされなくなり、どうやっても元通りにならないというのもきっかけです。
Qiita や Zenn も考えたのですが、技術寄りではない投稿も結構あるので、シンプルに静的なページを公開できる (かつ無料で) GitHub Pages を使ってみることにしました。
実行
GitHub Pages は、HTML を配置すればそのまま公開されますが、静的サイトジェネレーターの jekyll が組み込まれている (こういう表現が適切かどうかはわかりませんが) ので、jekyll に対応した記述をすれば自動的にページが生成されます。ブログのように、順次投稿が増えていくサイトを作るにはちょうどいいですね。
なお、jekyll は ruby によって記述されています。ruby は使ったことがありませんが、あくまでツールを使うだけで ruby のコードを書いたりするわけではないだろう、と考えています。といっても、ruby の実行環境を整えるのが大変そうだったので、こちらも docker を使うことにします。
まずは作業用のフォルダ構成です。今回は work/jekyll というフォルダを作ります。そこへ移動し、
でリポジトリをクローンします。
この状態で、work/jekyll
直下にdocker-compose.yml
ファイルとして以下の内容を記述します。
さらに、scripts
ディレクトリを作り、コンテナの初回起動のときだけ実行されるようにスクリプトをscripts/jekyll-init.sh
として用意します。
この処理は 2 回目以降のコンテナ実行時には実行されてほしくないので、check ファイルを作っておいてファイルが存在するときはスキップするようにしています。
jekyll の設定を一部変更する必要があるので、パッチをあてます。「scripts/jekyll.patch」として以下内容を用意します。
これで、以下のようなファイル、ディレクトリ構成になっていると思います。
この状態でwork/jekyll
直下に移動しdocker-compose up -d
を実行します。しばらく待ってhttp://localhost:4000
へアクセスすると、
(少し編集後の画面しか残してませんでした・・・)
うまくいかない場合は、docker-compose logs -f
でログを見てつぶしていく感じですね。ruby のバージョン違いだからか、webrick を追加しないとエラーになったり、サイトの初期化が必要だったりと少し手間がかかりましたが、とりあえず docker-compose でプレビュー環境を立ち上げられるようになったのは一安心です。
初期設定用のスクリプトで、work/jekyll/android-pokoten.github.io
直下へ jekyll の初期ファイルが配置されます。そのファイルを順次編集して動作確認し、問題なければ github へファイルをアップロードします。
jekyll はファイルの変更を自動的に反映してくれます。ただ、_config
を編集した場合の反映は、jekyll の再起動が必要かもしれません。これは、
と実行します。ブログの更新をしないときは、docker-compose stop
で止めておくことも可能です。
github へアップロードする際に、_site
配下のファイルはアップロードする必要はありません。jekyll が自動的に実行されるようです。(なので、jekyll が生成する .gitignore ファイルで_site
を指定しています)
1分くらい待ってから github.io を開くと、jekyll で生成されたページが表示されると思います。