過去我們在部署網站應用程式時,要注意的點真的很多呀:
其實如果是很典型的部署,一切照預設值應該不難。但這次我們來換一個方式思考:假設被部署的機器要求不再是 IIS 而是 Docker 呢?
首先我們在專案目錄完成編譯,我這裡用的是 Visual Studio Code,當然各位可以替換成 Visual Studio 或是從 Jenkins 抓回來都可以(如下圖):
通常最簡單的部署就是把這整個目錄搬到網站主機上,這件事我們要在專案目錄下新建一個名為 Dockerfile 的文字檔來描述,內容如下:
才兩行而已,大意就是「指定 ASP.NET 的版本」(現在大概就 3.5 跟 4.8 兩種可選),還有「複製當前目錄到 Docker 的 C:\inetpub\wwwroot 目錄下」。
接下來就是製作 Docker Image,假設對此命名為 webgoat 好了,指令與結果如下圖:
這時建好的 Docker Image 只能在本機使用,我們先不談發佈到其他 Docker Registry 的做法,也假設未來被發佈的對象,除了預先裝好 Docker 之外,不需安裝其他 IIS ASP.NET 那一堆拉里拉雜的東西,但要能取到這個 Docker Image。在部署時要下類似這樣的指令:
這裡的意思是:為 webgoat 這個 Image 開一個 Container,命名為 webgoat,並且把本機的 80 埠對應到 Docker 的 80 埠。若部署沒問題,用瀏覽器看看 http://localhost 是否大功告成了呢?