Kamal を試した。
Basecamp 社が開発した Docker コンテナ版 Capistrano と言ったところ。
ちょうど RedMica の公式 Docker イメージ があることを知ったので、RedMica をデプロイすることにする。
RedMica は Redmine 互換の OSS で Rails で作られている。
デプロイ先の環境は非常にシンプル。
基本的に、 公式ドキュメント に従って進めるだけでデプロイすることができた。
試した際のコードは、hidakatsuya/redmica-deployment-with-kamal に置いてある。
とはいえ、いくつか躓いたところもあった。
Kamal は、デフォルトでは /up
でヘルスチェックを行う。しかし、RedMica v2.4.0 時点では /up
は存在しない (Rails 6 ベースなので)。
今回は /login
をヘルスチェック先として設定した。
healthcheck:
path: /login
port: 3000
Kamal は、Docker や curl などの必要なコマンドを自動的にインストールする機能を持っている。
この機能を使うためには、Debian ベースの OS である必要がある。apt-get
でインストールするため。
なお、予めデプロイ先にこれらをインストールするのであれば、この制約の影響は受けない。
とても便利。GitHub Actions 等から実行することも想定されている。 しかし、実際にプロダクション環境で使う場合は、Kamal のアーキテクチャをしっかり理解する必要があると感じた(まだよくわかってない部分もある)。