Octopress環境のDockerイメージ化

Posted by johtani on Monday, December 16, 2019

目次

最近使っていたPCが手元からなくなったので、16インチ Macbook Proをセットアップしているところです。 で、時間もあるのでこれまでほったらかしてきた、このブログの環境をちょっと変更しようかなと。

まずは、変更するにしても、Octopressのブログの環境自体は必要です。 実際に、移行する前のこの記事自体も書いているわけですし。

ただ、今後なくなる環境をローカル環境にセットアップするのもどうかと思い、Docker環境にしてみました。

参考

“Octopress Docker image"でググって出てきたサイトを参考にしました。

参考ブログ:Octopress in a Docker Container

セットアップからDockerイメージのビルドまで

  1. Docker for Mac自体もインストールしていなかったので、インストールしておきます。
  2. 参考ブログの方がGitHubのリポジトリにDockerfileをアップしてくれているので、手順に従い、cloneします。
    1. cloneしたDockerfileの3行目にENV LC_ALL C.UTF-8を追加します(UTF-8でブログを書いており、previewした場合にエラーが出たため)
    2. 参考ブログにある「Build the docker image」の手順に従い、Gemfile、.gitconfigをコピーしてイメージをビルドします。
  3. 参考ブログの「Rakefile」にあるように、自分のoctopress/RakefileProcess.spawn(...)にアドレスを追加します(Dockerコンテナの外からアクセスできるように)
  4. 自分のoctopressにあるGemfile.lockを削除しました(ビルドしたイメージにはいるGemと一部バージョンが異なる記載のものがあったため)

ここまでで、

Docker run

実際にコンテナを実行するためのスクリプトを書きました(書いたと言っても参考ブログにある起動コマンドを叩いてるだけですが。。。)

launch-octopress-docker.shというファイル名で以下のコマンドを実行してるだけです。

!/bin/sh
docker run -p 4000:4000 --rm --volume /Users/johtani/projects/blog/octopress:/octopress --volume /Users/johtani/.ssh:/home/blogger/.ssh -ti blog/octopress /bin/bash

このシェルを起動すると、Dockerコンテナにbashで接続し、/octopressディレクトリにログインしています。 あとは、いつものようにrake new_post["...."]で新規記事のテンプレートを作成したりすればOKです。

rake generate; rake previewと実行してからローカルのブラウザでhttp://localhost:4000に接続すればプレビューも可能。

ということで、このDockerファイルとかを持っておけば、他の環境でもかんたんにOctopressの環境が再現できそうです。 先人の知恵有り難し。 これで、クリーンなまま他のブログ環境に移行できそう。

追記(2019/12/17)

Docker環境でいくつか問題があったので、追記しておきます。

Docker for Macが再起動しない

Docker for MacがCatalina環境だと問題があるみたいでした。 CPUの数やメモリの数を変更してDockerを再起動したところ、ずっとStartingのまま。

解決方法としては、launchctlの設定に$PATHを追加するみたい。これで、問題なく起動するようになった気がする

sshの設定ファイルの問題

.ssh/configにMacのKeyChainを利用する設定を記載してるんですが、Ubuntu上だとこの設定のせいで、エラーが出てしまいます。 IgnoreUnknownという設定で、知らないオプションがあったら無視するという設定になる模様。ということで、Dockerコンテナ上でrake deployのときにエラーが出てたのが解消できました。


comments powered by Disqus