本篇文章主要是如何在Docker容器中運行ASP.NET Core應用程序,以及修改系統之后,發布更新。本文章采用自定義的Docker文件
系統要求:
1.服務器或本地已經安裝docker
一、創建一個Asp.Net Core 2.1 Web應用(若可以熟練創建項目,可忽略此節)
注意這里沒有勾選 “啟動Docker支持”
二、創建Docker文件
項目創建完成之后,在項目的根目錄下,添加一個Dockerfile文件,注意文件名。
在Dockerfile文件中,添加如下內容
# 添加基礎鏡像 FROM microsoft/dotnet:2.1-aspnetcore-runtime #容器中系統的工作空間 WORKDIR /app #拷貝當前文件夾下的文件到容器中系統的工作空間 COPY . /app #設置Docker容器對外暴露的端口 EXPOSE 80 #容器中使用 ["dotnet","系統啟動的dll"] 來運行應用程序 #使用ENTRYPOINT ["dotnet","系統啟動的dll"] #或使用 CMD ["dotnet","系統啟動的dll"] ENTRYPOINT ["dotnet", "School.Web.dll"]
修改Dockerfile文件屬性
三、發布應用程序
注意在發布的設置,目標運行時為可移植,我曾經設置為winX64發現運行時啟動不起來的問題
四、發布應用程序到服務器上
使用FTP或其他工具,將應用程序上傳到服務器上。如,我使用FileZilla,將文件上傳到/home/ubuntu/work/project/csharp/school文件夾下。
五、創建鏡像
在應用程序的目錄下:/home/ubuntu/work/project/csharp/school(根據自己情況而定,也就是服務器上Dockerfile所在目錄),執行生成鏡像命令。
docker build -t school:1.0.0 .
注意鏡像名稱后邊的 . (school:1.0.0是標識鏡像名稱和版本信息)
此時將下載Asp.Net Core 2.1-aspnetcore-runtime 基礎鏡像,並運行Dockerfile中的后續指令
六、創建並啟動容器
docker run --name=school -d -p 8000:80 -v /home/ubuntu/work/project/csharp/school:/app school:1.0.0
注意此處-v,將文件掛載到服務器宿主機上,便於后續更改時,可以直接重啟生效
當成功執行之后,會輸出school(容器名稱),這時候可以通過 docker ps -a 查看容器是否啟動正常。當容器狀態顯示為UP時,表示啟動成功。
在本地輸入服務器IP地址+8000端口,成功看到系統正常運行了。
七、應用程序更新及發布
項目正常啟動之后,嘗試修改項目的View頁面或Controller,然后重新發布之后,將更新上傳至服務器對應的項目文件夾(/home/ubuntu/work/project/csharp/school)。
執行命令,使項目更新:
docker restart school
瀏覽器中刷新頁面查看更新
八、錯誤排查
1.當啟動容器是發現容器狀態為Exit時,通過命令: docker logs school 查看容器啟動中的錯誤。
2.可對照上述過程中的各個注意點一一排查。
,