lokkaをCloudRunで動かす

概要

https://github.com/lokka/lokka
このブログはVPSで動かしていたんだけど、VPSのメンテができていないので解約することにした。移行先はCloudRunにした。

VPSを解約していく

http://instance-email.com/ というWEBサービスをVPS上で動かしていたんだけど、赤字もいいところなのでいい加減終了することにした。
http://instance-email.com/ のVPSには http://blog.jiikko.com/ も乗っていたのでこっちは移行先を探すことにした。

最近仕事でCloudRunを触ることになりそうなので、キャッチアップがてらにblogをCloudRunに移行することにした。

GCPに引っ越す

  • DBは、VPS内にMySQLサーバを立てていたので、それをCloudSQLに移行した。ダンプデータを出し入れして終わり
  • lokkaのDockerイメージをビルドしてGCRにpushなどした
    • lokkaのリポジトリにはDokerfileが同梱してあったので、動かすためにいくつか修正した
    • https://github.com/lokka/lokka/pull/295
    • https://github.com/lokka/lokka/pull/296
    • AppleシリコンでビルドするとArmイメージになるので、CloudRunでは動かない
      • docker buildx build --platform linux/amd64 -t gcr.io/jiikko/blog . --push みたいな感じでGCRにpushする必要がある
  • CloudRunからCloudSQLに接続する
  • CloudRunへデプロイする
    • gcloud run deploy blog --image gcr.io/jiikko/blog --max-instances=1 --region=asia-northeast1 --allow-unauthenticated --set-env-vars RACK_ENV=production --set-env-vars DATABASE_URL="mysql://xxx:xxx@localhost/lokka_production?socket=/cloudsql/jiikko:asia-northeast1:hobby-db" みたいな感じでOK
  • DNSを切り替えて終わり
    • CloudRun側でHTTPSのための証明書が作られるまでダウンタイムが若干ある

所感

DBへの接続方法がローカルと本番でパラメータが違うのでネットワーク系でハマりがち。
後回しにしまくっていたVPS解約だけど、移行準備の前に「先に解約手続き」をすることでスムーズに進行した。解約駆動開発。