蒼時弦也
蒼時弦也
資深軟體工程師
發表於
這篇文章是 Rails 部署實踐 系列的一部分。

將 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 部署實踐回饋表單告訴我。