溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Linux服務器中利用Docker部署一個.net Core項目

發布時間:2021-06-08 16:26:23 來源:億速云 閱讀:331 作者:Leah 欄目:開發技術

如何在Linux服務器中利用Docker部署一個.net Core項目?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

構建Dockerfile文件

在目標文件根目錄新建Dockerfile文件(沒有后綴)

FROM microsoft/dotnet//基于'microsoft/dotnet' 來構建鏡像
COPY . /app //拷貝項目文件夾中的所有文件到docker容器中的app文件夾 這里是兩個參數
WORKDIR /app //設置工作目錄為 '/app' 文件夾,即容器啟動默認的文件夾
EXPOSE 80 //設置Docker容器對外暴露80端口
CMD ["dotnet", "Core.Web.dll"] //使用'dotnet Core. Web.dll'來運行應用程序

上傳項目文件

1.將項目構建為鏡像

將文件上傳到Linux的www目錄下,使用命令構建成鏡像

docker build -t testcore . //-t 指定鏡像名 . 表示Dockerfile所在目錄

注意 dockerfile中基于microsoft/aspnetcore或microsoft/dotnet來構建鏡像(dotnet>aspnetcore)需要以服務器上安裝的鏡像版本做區分

構建成功,在鏡像中可以看到新建的鏡像

如何在Linux服務器中利用Docker部署一個.net Core項目

2.將鏡像發布為容器

docker run --name testapp -d -p 8000:80 -v /www:/app testcore 
--name指定容器名稱 
-d 指定容器后臺運行 
-p 指定外部8000端口映射到容器80端口 
-v 綁定數據卷/www到容器內的/app (本地目錄:容器內目錄)本地目錄必須為絕對路徑
testcore鏡像名

3.查看容器是否是否處于運行狀態,若啟動失敗顯示為exit,可查看日志

docker ps -a //查看所有容器的運行狀態

docker exec -it testapp bash //若容器正在運行,進入容器內部
docker logs testapp//若容器未運行,查看報錯日志

4.請求網站查看網站是否運行成功

curl 0.0.0.0:8000
curl -s -D - localhost:8000 -o /dev/null //查看請求返回信息

最后查看防火墻端口開放情況,以及阿里云后臺安全組端口開放情況(如果你是用的阿里云服務),再通過外網訪問瞅瞅

5.更新代碼

由于在創建容器的時候映射了數據卷,則當有靜態文件更新的時候,會自動更新到容器內。
但是當有dll文件更新時,需要手動重啟一下容器

docker restart testapp

以上,實現了將一個Asp.Net Core MVC項目發布到docker中的全過程。目前容器中只有一個dotnet鏡像,通過地址訪問網站實際上直接訪問的Kestrel服務器。

一些額外的想法

Kestrel服務器只是一個輕量級的web服務器,并且不支持基于主機名的綁定(如果1臺服務器部署了多個 ASP.NET Core 站點,每個站點需要使用不同的端口)

出于安全性考慮(包括但不限于適當的超時,大小的限制,以及并發連接限制等問題)需要在Kestrel和Internet之間加入一個反向代理服務器(IIS,Nginx或者Apache)

看完上述內容,你們掌握如何在Linux服務器中利用Docker部署一個.net Core項目的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女