1. 程式人生 > >ASP.NET CORE做的網站運行在docker上(不用dockerfile文件部署)

ASP.NET CORE做的網站運行在docker上(不用dockerfile文件部署)

退出 工作 etc netcore 得出 總結 圖片 ctrl+c cmd

原文:ASP.NET CORE做的網站運行在docker上(不用dockerfile文件部署)

按網上的做法用dockerfile文件是可以弄得出來的,http://www.docker.org.cn/article/119.html,

不過我想把網站文件放在外面硬盤目錄,再映射進去,這樣只要在硬盤目錄中修改CSHTML文件後重啟一下容器就行了

步驟如下:

1. vs中建立ASP.NET CORE網站,類名為coreweb1

2. 發布到c:\temp\coreweb1目錄

3. 先在本地CMD命令行測試一下是否成功,cd c:\temp\coreweb1 , 再運行docnet coreweb1.dll

4. 不出意外應該沒錯,瀏覽器輸入http://localhost:5000 可以訪問網站

5. 退出命令行工具,開始進行docker鏡像部署,前提是先裝好docker,如果映射本地端口是80則記得先把IIS停了(如果你裝了IIS的話)

6. 命令行CMD中輸入docker命令 docker run -p 8001:80 -v c:/temp/coreweb1:/wwwroot -w /wwwroot/ microsoft/aspnetcore dotnet /wwwroot/coreweb1.dll

??????? 解釋下上面的命令:運行docker容器,名字叫microsoft/aspnetcore,這是微軟官方的asp.net core鏡像,映射本地端口8001到容器內的80端口,把本地目錄c:/temp/coreweb1 映射為容器裏的 /wwwroot 目錄 , 把容器內的工作目錄 設置為 /wwwroot/ ,容器運行起來後再運行命令 dotnet /wwwroot/coreweb1.dll

7. 如果不報錯應該就能看到網站正在運行了,在外面瀏覽器中輸入http://localhost:8001 應該就可以訪問網站了,哪怕在命令行中按ctrl+c退出,但是實際上docker容器也是正在運行中,輸入命令docker ps 可以看到正在運行的容器

8. vs中再創建另一個asp.net core網站,類名為coreweb2,發布到c:\temp\coreweb2,

9. 運行docker命令映射8002端口 :docker run -p 8002:80 -v c:/temp/coreweb2:/wwwroot -w /wwwroot/ microsoft/aspnetcore dotnet /wwwroot/coreweb2.dll

10. 這樣二個core網站就部署起來了,瀏覽器分別輸入http://localhost:8001 和 http://localhost:8002 就可以分別看到2個網站

11. 如果外面目錄中的文件有修改,比如修改了c:/temp/coreweb1/views/home/index.cshtml文件, 則在命令行中重啟docker容器後刷新瀏覽器才能看到修改後的效果 ,命令:docker restart 容器ID , 其中容器ID是通過 docker ps 查詢出來的,前面第一列的就是,可以只輸入開頭幾個字母

技術分享圖片

???

總結:我有一個夢想,在XX雲上要一個最便宜的單核1G內存的linux服務器,裝上nginx和docker,然後通過 docker運行asp.net core網站 ,PHP網站,JSP網站,GO網站,PYTHON網站,NODE.JS網站.....

技術分享圖片技術分享圖片技術分享圖片

ASP.NET CORE做的網站運行在docker上(不用dockerfile文件部署)