用VS2017 建立了 DotNet Core 2.2 的網站后,如何轉移到 Docker 下運行?
下面分兩種方式來實踐: 1、直接手動命今行,將本機目錄映射進Docker,運行網站。2、制作 Image ,再啟動 Docker 運行。
一、將本機目錄映射進Docker,運行網站fil
1. vs中建立ASP.NET CORE網站,類名為WebApplication3. (在創建時,可以勾選上 Docker 。好處是會自動生成 Dockerfile 文件,方便后面抄寫命令。)
2. 發布到 e:/app 下。(隨便建的發布目錄)
3. 先在本地CMD命令行測試一下是否成功,cd e:\app, 再運行docnet WebApplication3.dll
4. 瀏覽器輸入http://localhost:5000 可以訪問網站
5. 退出命令行工具,開始進行docker鏡像部署,前提是先裝好docker,如果映射本地端口是80則記得先把IIS停了(如果你裝了IIS的話)
6. 在命令行上先安裝 DotNetCore 運行環境:Docker pull microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803 和 Docker pull microsoft/dotnet:2.2-sdk-nanoserver-1803
這兩個命令行的具本內容,可以在工程自動生成的 Dockerfile 中找到。
如果遇到錯誤:image operating system "windows" cannot be used on this platform
請將 Docker 切換到windows 模式。
7. 命令行CMD中輸入docker命令 docker run -p 8001:80 -v e:/app:c:/wwwroot -w /wwwroot microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803 dotnet WebApplication3.dll
解釋下上面的命令:運行docker容器,名字叫microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803,這是微軟官方的asp.net core鏡像,映射本地端口8001到容器內的80端口,把本地目錄e:/app 映射為容器里的 C:/wwwroot 目錄 , 把容器內的工作目錄 設置為 /wwwroot,容器運行起來后再運行命令 dotnet /wwwroot/WebApplication3.dll
請留意 -v 后面目錄的寫法。
8.在瀏覽器中輸入http://localhost:8001 應該就可以訪問網站了,哪怕在命令行中按ctrl+c退出,但是實際上docker容器也是正在運行中,輸入命令docker ps 可以看到正在運行的容器。
二、網站制作 Image ,再啟動 Docker 運行
1. 在 e:/app 目錄下,創建 Dockerfile 文件
FROM microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803 EXPOSE 80 EXPOSE 443 FROM microsoft/dotnet:2.2-sdk-nanoserver-1803 COPY . . ENTRYPOINT ["dotnet", "WebApplication3.dll"]
2. 在命令行中輸入 “docker build -t web3 . ” 創建鏡像文件
3. 通過 docker images 可以查看到新建的 web3 鏡像。
4. 啟動鏡像中的網站 docker run --name myWeb -p 9001:80 -d web3
其中 -d 是后台運行的意思。輸出一串編碼,表示已經運行了。
5. 在瀏覽器中輸入http://localhost:9001 應該就可以訪問網站了。
6. 常用調試命令 docker ps 列出當前正在運行的 container , 還有 docker logs <container-id> 查看程序運行的log信息。
刪除 container 和 刪除 image 也常用到。
三、參考文章
了解用於 Linux 和 Windows 容器的 Docker “容器主機”與“容器操作系統”