在Docker中部署Asp.net core2.1以及修改发布
本篇文章主要是如何在Docker容器中運行ASP.NET Core應(yīng)用程序,以及修改系統(tǒng)之后,發(fā)布更新。本文章采用自定義的Docker文件
系統(tǒng)要求:
1.服務(wù)器或本地已經(jīng)安裝docker
一、創(chuàng)建一個Asp.Net Core 2.1 Web應(yīng)用(若可以熟練創(chuàng)建項目,可忽略此節(jié))
注意這里沒有勾選 “啟動Docker支持”
二、創(chuàng)建Docker文件
項目創(chuàng)建完成之后,在項目的根目錄下,添加一個Dockerfile文件,注意文件名。
在Dockerfile文件中,添加如下內(nèi)容
| 12345678910111213 | # 添加基礎(chǔ)鏡像FROM microsoft/dotnet:2.1-aspnetcore-runtime#容器中系統(tǒng)的工作空間WORKDIR /app#拷貝當(dāng)前文件夾下的文件到容器中系統(tǒng)的工作空間COPY . /app#設(shè)置Docker容器對外暴露的端口EXPOSE 80#容器中使用 ["dotnet","系統(tǒng)啟動的dll"] 來運行應(yīng)用程序#使用ENTRYPOINT ["dotnet","系統(tǒng)啟動的dll"]#或使用 CMD ["dotnet","系統(tǒng)啟動的dll"]ENTRYPOINT ["dotnet",?"School.Web.dll"] |
修改Dockerfile文件屬性
?三、發(fā)布應(yīng)用程序
注意在發(fā)布的設(shè)置,目標(biāo)運行時為可移植,我曾經(jīng)設(shè)置為winX64發(fā)現(xiàn)運行時啟動不起來的問題
四、發(fā)布應(yīng)用程序到服務(wù)器上
? 使用FTP或其他工具,將應(yīng)用程序上傳到服務(wù)器上。如,我使用FileZilla,將文件上傳到/home/ubuntu/work/project/csharp/school文件夾下。
五、創(chuàng)建鏡像
在應(yīng)用程序的目錄下:/home/ubuntu/work/project/csharp/school(根據(jù)自己情況而定,也就是服務(wù)器上Dockerfile所在目錄),執(zhí)行生成鏡像命令。
docker build -t school:1.0.0 .注意鏡像名稱后邊的?.? (school:1.0.0是標(biāo)識鏡像名稱和版本信息)
此時將下載Asp.Net Core?2.1-aspnetcore-runtime 基礎(chǔ)鏡像,并運行Dockerfile中的后續(xù)指令
六、創(chuàng)建并啟動容器
docker run --name=school -d -p 8000:80 -v /home/ubuntu/work/project/csharp/school:/app school:1.0.0注意此處-v,將文件掛載到服務(wù)器宿主機上,便于后續(xù)更改時,可以直接重啟生效
當(dāng)成功執(zhí)行之后,會輸出school(容器名稱),這時候可以通過?docker ps -a?查看容器是否啟動正常。當(dāng)容器狀態(tài)顯示為UP時,表示啟動成功。
在本地輸入服務(wù)器IP地址+8000端口,成功看到系統(tǒng)正常運行了。
七、應(yīng)用程序更新及發(fā)布
項目正常啟動之后,嘗試修改項目的View頁面或Controller,然后重新發(fā)布之后,將更新上傳至服務(wù)器對應(yīng)的項目文件夾(/home/ubuntu/work/project/csharp/school)。
執(zhí)行命令,使項目更新:
docker restart school瀏覽器中刷新頁面查看更新
八、錯誤排查
1.當(dāng)啟動容器是發(fā)現(xiàn)容器狀態(tài)為Exit時,通過命令:?docker logs school? 查看容器啟動中的錯誤。
2.可對照上述過程中的各個注意點一一排查。
相關(guān)文章:
ASP.NET Core 2.1 使用Docker運行
.NET Core使用skiasharp文字頭像生成方案(基于docker發(fā)布)
Docker容器中開始.NETCore之路
原文地址:https://www.cnblogs.com/kingkangstudy/p/9221041.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的在Docker中部署Asp.net core2.1以及修改发布的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core微服务之基于Ident
- 下一篇: 要用Identity Server 4