0

我忙於開發一個API,我的移動應用程序,現在我期待在後端解決方案的部署。這些組件非常簡單:nginx,.NET核心應用程序和postgresql用於持久性。如果我需要快速擴展,我想首先在一個節點上開始使用Docker Swarm。爲Postgresql提供一個單獨的數據卷看起來很順利,但我無法找到關於升級和數據庫遷移的任何建議。當我需要升級Postgresql映像(不需要pg_upgrade的次要升級)時,這必須是手動操作還是可以通過滾動升級來管理?要求將在發生這種情況時關閉所有應用程序實例。同樣,我如何管理數據庫遷移,例如靜態數據/模式更改?我將需要退出所有應用程序實例,完成遷移並重新啓動。任何想法不勝感激。與碼頭工人羣數據庫的持續部署

回答

0

所以,走了,做了這個,我想我會張貼我的解決方案最終看起來像什麼細節。首先,我使用了GoCD,這是一個夢幻般的開源連續傳送服務器,可以實現從測試到生產的全部交付。使用Docker可以很好地應用單一職責原則,所以我爲Web,應用程序,數據和監控創建了獨立的Docker堆棧。數據堆棧由Postgres的容器和一般處理數據庫備份的容器組成。 Web堆棧由Traefik容器組成 - 一個反向代理服務器,用於將流量路由到應用程序堆棧。應用程序堆棧本身由用於C#應用程序API的可伸縮容器以及使用db-up進行託管數據庫遷移的容器組成。最後,監控棧有用於logstash,logspout,kibana,grafana和portainer容器中,該應用記錄到elasticsearch和kibana/grafana提供此數據的可視化。 Portainer支持羣體的基本管理。

提交給到位桶上的主分支觸發更新庫通過GoCD我的測試環境下,用在CentOS的bash腳本相當數量的編織這一切在一起。當測試看起來不錯時,我可以將按鈕部署投入生產。其滋潤Docker容器的圖像是GoCD建立文物和版本作爲構建過程的一部分,所以很容易恢復到並在必要時重新發現它們。

我只想說,有大量複雜的克服,例如互聯網服務依賴和啓動,但通常的谷歌搜索量和堅持不懈的支付股息。現在就像一個魅力!