目次
最近使っていたPCが手元からなくなったので、16インチ Macbook Proをセットアップしているところです。 で、時間もあるのでこれまでほったらかしてきた、このブログの環境をちょっと変更しようかなと。
まずは、変更するにしても、Octopressのブログの環境自体は必要です。 実際に、移行する前のこの記事自体も書いているわけですし。
ただ、今後なくなる環境をローカル環境にセットアップするのもどうかと思い、Docker環境にしてみました。
参考
“Octopress Docker image"でググって出てきたサイトを参考にしました。
参考ブログ:Octopress in a Docker Container
セットアップからDockerイメージのビルドまで
- Docker for Mac自体もインストールしていなかったので、インストールしておきます。
- 参考ブログの方がGitHubのリポジトリにDockerfileをアップしてくれているので、手順に従い、cloneします。
- cloneしたDockerfileの3行目に
ENV LC_ALL C.UTF-8
を追加します(UTF-8でブログを書いており、previewした場合にエラーが出たため) - 参考ブログにある「Build the docker image」の手順に従い、Gemfile、.gitconfigをコピーしてイメージをビルドします。
- cloneしたDockerfileの3行目に
- 参考ブログの「Rakefile」にあるように、自分の
octopress/Rakefile
のProcess.spawn(...)
にアドレスを追加します(Dockerコンテナの外からアクセスできるように) - 自分の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
See Also by Hugo
- ブログ移行日記(その2) - Markdownファイルの変換
- Elasticsearchの新しいJavaクライアント(2024年3月版)
- VS CodeとDev Container(コンテナ名の指定)
- VS CodeとDev Container(docker-compose.yml対応)
- VS CodeとDev Containerの導入(まだ途中)