這將是一個有點問題,所以要預先警告。如何將我當前的部署方法遷移到使用Docker的方法?
短的版本:
我們目前部署的系統採用織物和Git部署一個Python Web應用程序和配套零部件。該系統運行良好,但經過2周的努力才得以擴展,我意識到我本質上是在試圖重新發明Docker輪。於是我決定考慮重新使用Docker。但是,我在處理Docker到當前工作流程的方式和方式方面遇到了一些問題。
長版本:
我目前正在對由Apache的,Django的後端,瓶前端,ElasticSearch部署和PostgreSQL數據庫的Web應用程序。後端和前端通過Apache暴露於外部世界,並通過所述暴露相互通信。
部署使用Fabric和Git。當Fabric管理配置和管理部署環境所涉及的所有任務時,Git用於穿梭變化。
目前的系統對於基本的使用情況已經足夠好了。但是,隨着我們添加更多開發人員測試不同分支變得更加棘手。這是因爲每個部署環境(當前有2個,分段服務器和生產服務器)只能服務整個應用程序的一個實例。另一個難點在於確保每個開發人員都有正確的設置來正確運行應用程序。
我花了兩個星期的時間致力於改進部署的Fabric方面,取得了一些成功。不幸的是,成功打開了一堆蠕蟲,我很快意識到它會導致大量的額外開發,簡單地複製Docker已經做的事情。因此我決定退後一步,討論如何集成Docker。儘管如此,我還是遇到了一些麻煩。
目標:
保持部署是相對簡單的,因爲他們現在:目前部署 基本上只是使部署ENV獲取最新的變化,備份的數據庫,應用更改,確保應用程序配置正確,然後重新啓動任何必要的服務。
讓用戶能夠輕鬆測試分支:這將是巨大的,如果我可以告訴測試人員等,要測試一個分支,他們只需要瀏覽器A.x.y.z和支路B則可在B.x.y.z.找到我使用Fabric做的工作是爲一個組件(前端)管理的,但是在爲其他組件處理Fabric文件時,我意識到事情有可能變成一個可怕的混亂。
允許開發人員在接近deployyev env的環境中開發而不強制他們運行部署env的鏡像:部署envs非常適合部署,但不是每個人都想在他們的開發箱上運行Ubuntu,種種原因。 Docker在本地複製部署env方面似乎有很大的潛力,但實際上並沒有這樣做。
問題的一部分:
我在與被決定什麼應該面料,碼頭工人和Git做麻煩的區域。
我應該部署Docker整個映像,包括應用程序還是使用Docker來簡單地封裝部署環境,然後將應用程序掛載到Docker映像中?
或者我應該嘗試在Docker鏡像中複製當前進程?
或者我應該想出一些主要利用Docker的新流程,並減少Fabric和Git的數量?
不幸的是,似乎有很多潛在的方法,我真的不知道哪一個被推薦,哪一個是不好的主意。
任何人都可以推薦一種部署方法,可以讓我實現自己的目標而不會遇到重大問題嗎?
您的目標是「部署」某個開發人員進行測試的東西,還是部署可以訪問的東西?我認爲這兩種情況會有不同的解決方案。 – larsks