Kamalで既存イメージをデプロイする(現状)最適解
みなさん Kamal 使ってますか?
多分この記事で有名になったと思うんですけど
Kamal 2 を使い、インフラに詳しくない人でもNext.jsを296円のVPSにデプロイできるよう、説明してみる - Naofumi
これを使って、開発中のプロダクトではなく単に既存イメージをデプロイする場合どう書くとメンテしやすいかなーと試行錯誤してたら、いい感じの方法を見つけたので共有させて頂きます。
準備
- Docker のインストール
- Kamal のインストール
- Docker Hub アカウント
- Docker Hub のアクセストークン (Read & Write)
手順
kamal initでコンフィグ等を生成FROMでイメージをタグ付きで指定した Dockerfile を作成 (コンフィグファイル等がある場合は適宜COPYすること)config/deploy.ymlを編集 (詳細は後述)kamal setupでデプロイ
config/deploy.yml の編集箇所
service, image, servers, registry はコメントアウトを読めば理解できると思うので割愛します。
proxy

host, app_port はコメントアウト通りに編集すればよいのですが、ヘルスチェックがデフォルトで /up に対して走るので、大半のアプリケーションでエラーが起きます。
proxy.healthcheck.path を指定することで、このパスを編集できます。
https://kamal-deploy.org/docs/configuration/proxy/#healthcheck
builder

builder.context を指定することで、docker build のベースパスを指定してビルドできます。
ごらんの有様だよ!!!
で、俺が産まれたってわけ。