一番基本的なところを試してみたかっただけなのですが、嵌ったのでメモしておきます。
公式の Docker イメージは以下のようなのでこれを使いますが、長い間メンテナンスされていないようです。
環境
- Ubuntu 20.04
- docker 24.0.7
新規作成
まずはドキュメントに従って、以下のコマンドでブログを新規作成してみます。
export site_name="my-blog"
docker run --rm \
--volume="$PWD:/srv/jekyll" \
-it jekyll/jekyll \
sh -c "chown -R jekyll /usr/gem/ && jekyll new $site_name" \
&& cd $site_name
以下のエラーが出て失敗します。
/usr/local/lib/ruby/3.1.0/fileutils.rb:243:in `mkdir': Permission denied @ dir_s_mkdir - /srv/jekyll/my-blog (Errno::EACCES)
これでかなり嵌ったのですが、以下の記事を見つけました。
どうやら環境変数を指定すればいいそうです。
export site_name="my-blog"
docker run --rm \
-e JEKYLL_UID=1001 \
-e JEKYLL_GID=1001 \
--volume="$PWD:/srv/jekyll" \
-it jekyll/jekyll \
sh -c "chown -R jekyll /usr/gem/ && jekyll new $site_name" \
&& cd $site_name
これで、my-blog
というフォルダが作成され、中に Jekyll のブログの雛形が作成されています。
ビルド
上記で作成した内容をビルドして静的サイトを生成します。
引き続き、環境変数を指定したうえでドキュメント通りに以下を実行します。
export site_name="my-blog"
docker run --rm \
-e JEKYLL_UID=1001 \
-e JEKYLL_GID=1001 \
--volume="$PWD/$site_name:/srv/jekyll" \
-it jekyll/jekyll \
jekyll build
my-blog
の中に _site
というフォルダが出力されました。
サーバー起動
次はサーバーを起動してブラウザからアクセスしてみます。
こちらも引き続き、環境変数を指定したうえでドキュメント通りに以下を実行します。
export site_name="my-blog"
docker run --rm \
-e JEKYLL_UID=1001 \
-e JEKYLL_GID=1001 \
--volume="$PWD/$site_name:/srv/jekyll" \
-p 4000:4000 \
-it jekyll/jekyll \
jekyll serve --force_polling --livereload --host 0.0.0.0
以下のエラーが出ました。
<internal:/usr/local/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- webrick (LoadError)
webrick がないそうなので、my-blog
内の Gemfile
に以下を追加します。
gem "webrick"
これで上記のコマンドを実行すれば無事サーバーが起動し、http://localhost:4000
にアクセスすることで閲覧できました。
所感
公式の Docker イメージ使って基本的なことを確認したかっただけなのに全然動かねぇじゃんって思いました。