老司機實戰Windows Server Docker:2 docker化現有iis應用的 ... | docker iis
前言上一篇老司機實戰WindowsServerDocker:1初體驗之各種填坑[1]介紹了安裝docker服務過程中的一些小坑。這一篇,我們來填一些稍大一些的坑:如何docker化一個現有的iis應用。問題分析聽說Windows支援原生docker了,大家一定都很興奮。然而,大家想過沒有,WindowsServerDocker最適合什麼場景呢?部署.NETCore應用?為什麼不選擇Linux下的docker?正常的決策者腦袋被門擠了才會花錢額外買WindowsServer的license,用來部署.NETCore吧?所以,在本人看來,WindowsServerDocker最大的價值,還是在於部署傳統基於WindowsServerCore的應...
前言上一篇老司機實戰Windows Server Docker:1 初體驗之各種填坑[1]介紹了安裝docker服務過程中的一些小坑。這一篇,我們來填一些稍大一些的坑:如何docker化一個現有的iis應用。
問題分析聽說Windows支援原生docker了,大家一定都很興奮。然而,大家想過沒有,Windows Server Docker最適合什麼場景呢?部署.NET Core應用?為什麼不選擇Linux下的docker?正常的決策者腦袋被門擠了才會花錢額外買Windows Server的license,用來部署.NET Core吧?所以,在本人看來,Windows Server Docker最大的價值,還是在於部署傳統基於WindowsServerCore的應用。這樣的應用一般有兩大類,一類是基於iis的網站應用;另一類是Windows Service。本文主要關注基於iis的應用的docker部署。
那麼,部署一個iis應用到docker,是不是隻要起一個iis的docker容器例項,遠端連線,並且,copy檔案進去,能通過容器內的iis訪問就行了?如果,有人問這樣的問題,那麼,說明他還完全沒有容器的思維。上面說的這個,其實就成了將容器當虛擬機器用了,這將極大地限制了docker原有的靈活擴充套件能力。因此,可以說是使用Windows docker最糟糕的姿勢之一了。
要正確部署一個iis應用到Windows Server Docker,並不是表面那麼簡單。限於篇幅,並且為了更專注,本文先不涉及容器編排、負載均衡、images的構建和管理等問題(這些要考慮的問題還有很多,以後我們單獨聊),這裡只關注如何將一個基於iis的應用正確運行於單個Windows Server Docker例項中。即便如此,一般至少也要解決下面這些問題:
Dockerfile:如何通過Dockerfile部署應用檔案和設定作業系統和IIS配置,如何為不同的執行環境(開發,測試,生產)配置不同引數; 檢視系統日誌:典型的系統日誌包含IIS Logs、Windows Event Log和應用的異常日誌; 重啟容器例項:當容器例項重啟時,如何保證被部署的應用能保持之前的工作狀態,能繼續服務; 網路路由:包括容器內部如何訪問外部系統、do...