現在このブログを Nomad のタスクとして Docker で動かしています。

Nomad クラスター上で Ghost ブログを動作させる
このブログは数年間単一のサーバーで稼働していました。 学習も兼ねてわざわざ自前でサーバーを運用していたのですが、最近新しい構成に移したくなり、Kubernetes の流行もあってクラスターやマイクロサービスといった時代の流れに乗るべく、Nomad クラスターへの移行を行いました。 Nomad クラスターの作成までは下記記事にまとめています (インフラやクラスターの設定等はここからさらに変更しています)。 * Nomad クラスターを作成する [https://blog.lorentzca.me/create-nomad-cluster-on-digitalocean/] 今回は…

が、現在の構成だとブログの更新が面倒…。ローカルに Docker イメージを持ってきてブログを更新、docker commit, docker push する必要があります。push 後サーバーにログインし Nomad タスクを書き換え、デプロイしています。

この問題は Nomad クラスター間でストレージを共有する CSI プラグインを導入し構成を変更することで解決しようとしています。が、現在まだうまく動かせていないので、それまでのつなぎとして多少ブログの更新を簡略化してみます。更新では特にブログの起動、コミットとプッシュが面倒なのでここだけとりあえず簡略化してみました。

Before:

  • $ docker run --name blog --privileged -d -p 2368:2368 -e url=http://localhost:2368/ lorentzca/blog.lorentzca.me:v0.0.8-202004181630
  • $ docker commit -m 'Update to Ghost version 3!' (docker ps -q) lorentzca/blog.lorentzca.me:v0.0.9
  • $ docker push lorentzca/blog.lorentzca.me:v0.0.9

After:

  • $ ./manage-blog.fish r v0.0.8-202004181630
    • latest を使用する場合は $ ./manage-blog.fish r
  • $ ./manage-blog.fish c "Update to Ghost version 3!" v0.0.9
    • バージョンを変更しない場合は $ ./manage-blog.fish c "Any message."
  • ./manage-blog.fish t
    • 生成されたタグの確認
  • ./manage-blog.fish p v0.0.9-202004182344

多少はマシになった。スクリプトは以下。

lorentzca/stateful-ghost-image
Contribute to lorentzca/stateful-ghost-image development by creating an account on GitHub.