Logo

Kamal 2 部署 Rails app 初步体验

avatar hugo 23 Oct 2024

一直想测试一下 Kamal 部署 Rails app 的方式,刚好 10 月初 Kamal 更新了 2.0 版本,就抽了时间体验了一下 kamal 部署 Rails app,看看有哪些优点和缺点。

部署的网站

production: https://kamal-demo.beansmile-dev.com/
staging: https://kamal-staging.beansmile-dev.com/

部署用的服务器只够买了一个月,所以后面就会停止访问。

iShot_2024-10-23_15.18.07.png

目前缺点

  1. Kamal 2 版本是10月初才更新的,官方文档的说明比较笼统,遇到部署问题,搜出来的网上资料,全是 kamal 1 版本的文章,2.0 新版参考资料很少。
  2. Kamal 构建镜像推送到 Docker Hub,Docker Hub 免费版只支持 1 个 private repo。个人付费版本需要 7 美元每月,Team 版年付是 9 美元每人每月。如果后续一些新项目使用 kamal 部署,则需要再额外维护一个 self hosted Docker Hub 服务,以托管 docker 镜像。
  3. 新旧项目不同的部署方式,会增加运维负担。
  4. 额外引入了 docker,增加了学习成本。并且 Docker Hub 在中国大陆地区访问受限,拉取镜像不方便。

优点

  1. 不需要手动配置裸机服务器,只需要更新 deploy.yml 文件,对应的底层依赖在部署时就会安装。
  2. 依赖全部集中在 docker 里,环境一致性好,能避免 macOS 的 Intel 和 Arm 架构差异导致的配置灾难。
  3. 方便横向扩展,新增机器只需要购买服务器,然后在 deploy.yml 里添加新的 IP 地址,再执行 setup 命令即可。免去了很多配置新服务器的时间。

参考资料

  1. Kamal 官网
  2. Streamlined Rails 7.2 Deployment: Leveraging Kamal 2 for Cost-Effective Single-Server Staging
  3. How to get started with Kamal 2