將 Rails 專案進行容器化,或者搭配容器化技術應用的情境很多,這邊介紹幾個比較有趣跟方便使用的案例,大家可以比較一下差異跟使用上的體驗。
dip
dip 是一個用來提供容器化開發環境的工具,如果想要將開發環境以容器為基礎的話,會是一個蠻不錯的選擇。我自己沒有實際嘗試過,可以想像是類似 Docker Comopse 的 Ruby on Rails 專用版本,應該也有事先做好不少處理。
kuby
kuby 算是一個蠻特別的工具,他是專門設計來將 Rails 專案跑在 Kubernetes 上的工具,而且跟大部分有提供 Kubeneter Cluster 的服務都有整合,算是可以節省不少學習成本就使用的工具,沒記錯也有對應 Dockerfile 生成的機制。
Buildpacks
Buildpacks 是 Heroku 公司在處理部署的基礎設施,雖然 Heroku 的底層不是使用 Docker 來搭建(推出時間比 Docker 更早)然而容器技術在 OCI(Open Container Initiative)被提出後,大多數都會採用類似的方式處理,因此容器鏡像能在不同解決方案通用。
簡單來說,如果不清楚該怎麼處理容器鏡像的製作,使用 Buikdpacks 會是個不錯的方案。
Waypoint
Waypoint 是知名 DevOps 工具開發公司 HashiCorp 近年的新產品,簡單來說類似於 kuby 的設計,一樣可以協助你把專案部署到 Kubernetes 的叢集上,因為跟 HashiCorp 的產品有很好的整合,也是使用 HCL(HashiCorp Configuration Language)如果有在使用 Terraform 之類的工具,可以考慮。
2021 年的時候嘗試使用是還沒有處於正常的狀態,想要使用的話可以觀望一下。
Packer
Packer 同樣是 HashiCorp 的產品,在容器技術還沒有普及的時候就可以用於製作雲端伺服器的硬碟鏡像,基本上可以無痛的轉移到使用容器的方式來製作容器鏡像。
Boxing
Boxing 是我為了解決上述工具都無法「精簡化」容器鏡像問題所設計,從這系列的文章中應該不難觀察到製作一個適合部署的容器鏡像並不容易,前面這些工具都有其對應的環境、前提,然而大多數人的部署環境更接近 Boxing 所設計的情境。
概念上 Boxing 的目標是以減少多餘檔案並且以最佳化狀態為前提設計,因此彈性相對小很多,並用來換取能夠馬上使用以及對部署負擔最小的好處。
如果想在第一時間收到更新,歡迎訂閱弦而時習之在這系列文章更新時收到通知,如果有希望了解的知識,可以利用Rails 部署實踐回饋表單告訴我。
如果對這篇文章有興趣,可以透過以下連結繼續閱讀這系列的其他文章。
- Rails 部署實踐 - 補上 Rails 教學缺少的一塊
- Rails 部署實踐 - 以容器部署 Rails 的方案
- Rails 部署實踐 - 部署前置準備
- Rails 部署實踐 - 容器化 Rails 專案概述
- Rails 部署實踐 - 上傳容器鏡像
- Rails 部署實踐 - 伺服器搭建
- Rails 部署實踐 - 撰寫 Docker Compose
- Rails 部署實踐 - 使用 HTTPS 協定加密連線
- Rails 部署實踐 - 健康檢查
- Rails 部署實踐 - 滾動更新
- Rails 實踐部署 - 使用 Alpine 製作容器鏡像
- Rails 部署實踐 - 容器化的 Bundler 最佳設定
- Rails 部署實踐 - 多階段建置
- Rails 部署實踐 - 素材預先編譯
- Rails 部署實踐 - 容器進入點
- Rails 部署實踐 - 容器相關工具
- Rails 部署實踐 - 持續部署
- Rails 部署實踐 - 使用 GitLab CI 自動化建置
- Rails 部署實踐 - 使用 GitHub Actions 自動化建置
- Rails 部署實踐 - 使用 Watchtower 自動更新
- Rails 部署實踐 - Docker Swarm 與 Docker Compose
- Rails 部署實踐 - Docker Swarm 安裝與設定
- Rails 部署實踐 - 部署到 Docker Swarm
- Rails 部署實踐 - 整合 GitLab CI 自動部署
- Rails 部署實踐 - 使用 GitLab 的 Review Apps 機制
- Rails 部署實踐 - 部署不是終點