Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的全過程
發(fā)布ASP.NET Core項(xiàng)目
和普通的項(xiàng)目發(fā)布一樣,將項(xiàng)目發(fā)布到目標(biāo)文件夾中
構(gòu)建Dockerfile文件
在目標(biāo)文件根目錄新建Dockerfile文件(沒有后綴)
FROM microsoft/dotnet//基于'microsoft/dotnet' 來構(gòu)建鏡像 COPY . /app //拷貝項(xiàng)目文件夾中的所有文件到docker容器中的app文件夾 這里是兩個(gè)參數(shù) WORKDIR /app //設(shè)置工作目錄為 '/app' 文件夾,即容器啟動(dòng)默認(rèn)的文件夾 EXPOSE 80 //設(shè)置Docker容器對外暴露80端口 CMD ["dotnet", "Core.Web.dll"] //使用'dotnet Core. Web.dll'來運(yùn)行應(yīng)用程序
上傳項(xiàng)目文件
1.將項(xiàng)目構(gòu)建為鏡像
將文件上傳到Linux的www目錄下,使用命令構(gòu)建成鏡像
docker build -t testcore . //-t 指定鏡像名 . 表示Dockerfile所在目錄
注意 dockerfile中基于microsoft/aspnetcore或microsoft/dotnet來構(gòu)建鏡像(dotnet>aspnetcore)需要以服務(wù)器上安裝的鏡像版本做區(qū)分
構(gòu)建成功,在鏡像中可以看到新建的鏡像
2.將鏡像發(fā)布為容器
docker run --name testapp -d -p 8000:80 -v /www:/app testcore --name指定容器名稱 -d 指定容器后臺運(yùn)行 -p 指定外部8000端口映射到容器80端口 -v 綁定數(shù)據(jù)卷/www到容器內(nèi)的/app (本地目錄:容器內(nèi)目錄)本地目錄必須為絕對路徑 testcore鏡像名
3.查看容器是否是否處于運(yùn)行狀態(tài),若啟動(dòng)失敗顯示為exit,可查看日志
docker ps -a //查看所有容器的運(yùn)行狀態(tài) docker exec -it testapp bash //若容器正在運(yùn)行,進(jìn)入容器內(nèi)部 docker logs testapp//若容器未運(yùn)行,查看報(bào)錯(cuò)日志
4.請求網(wǎng)站查看網(wǎng)站是否運(yùn)行成功
curl 0.0.0.0:8000 curl -s -D - localhost:8000 -o /dev/null //查看請求返回信息
最后查看防火墻端口開放情況,以及阿里云后臺安全組端口開放情況(如果你是用的阿里云服務(wù)),再通過外網(wǎng)訪問瞅瞅
5.更新代碼
由于在創(chuàng)建容器的時(shí)候映射了數(shù)據(jù)卷,則當(dāng)有靜態(tài)文件更新的時(shí)候,會(huì)自動(dòng)更新到容器內(nèi)。
但是當(dāng)有dll文件更新時(shí),需要手動(dòng)重啟一下容器
docker restart testapp
以上,實(shí)現(xiàn)了將一個(gè)Asp.Net Core MVC項(xiàng)目發(fā)布到docker中的全過程。目前容器中只有一個(gè)dotnet鏡像,通過地址訪問網(wǎng)站實(shí)際上直接訪問的Kestrel服務(wù)器。
一些額外的想法
Kestrel服務(wù)器只是一個(gè)輕量級的web服務(wù)器,并且不支持基于主機(jī)名的綁定(如果1臺服務(wù)器部署了多個(gè) ASP.NET Core 站點(diǎn),每個(gè)站點(diǎn)需要使用不同的端口)
出于安全性考慮(包括但不限于適當(dāng)?shù)某瑫r(shí),大小的限制,以及并發(fā)連接限制等問題)需要在Kestrel和Internet之間加入一個(gè)反向代理服務(wù)器(IIS,Nginx或者Apache)
下一篇,描述一下我在使用nginx轉(zhuǎn)發(fā)請求給Kestrel時(shí)遇到的問題。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對我們的支持。
上一篇:VS2017調(diào)用MySQL 8.0的方法
欄 目:ASP.NET
下一篇:ASP.NET Core實(shí)現(xiàn)自定義WebApi模型驗(yàn)證詳解
本文標(biāo)題:Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的全過程
本文地址:http://mengdiqiu.com.cn/a1/ASP_NET/10899.html
您可能感興趣的文章
- 01-11.NET Core 遷移躺坑記續(xù)集之Win下莫名其妙的超時(shí)
- 01-11win7-vs2012下安裝.net frame work 的過程圖文詳解
- 01-11.NET Core 3.0 可回收程序集加載上下文的實(shí)現(xiàn)
- 01-11Windows下Visual Studio 2017安裝配置方法圖文教程
- 01-11.NET Core 實(shí)現(xiàn)微信小程序支付功能(統(tǒng)一下單)
- 01-11.Net Core下HTTP請求IHttpClientFactory示例詳解
- 01-11VS2019下opencv4.1.2配置圖文教程(永久配置)
- 01-11.net core在服務(wù)器端獲取api傳遞的參數(shù)過程
- 01-11NLog路由規(guī)則和上下文信息知識點(diǎn)總結(jié)
- 01-11詳解ASP.NET MVC 下拉框的傳值的兩種方式


閱讀排行
本欄相關(guān)
- 01-11vscode extension插件開發(fā)詳解
- 01-11VsCode插件開發(fā)之插件初步通信的方法
- 01-11如何給asp.net core寫個(gè)簡單的健康檢查
- 01-11.net core高吞吐遠(yuǎn)程方法如何調(diào)用組件
- 01-11淺析.Net Core中Json配置的自動(dòng)更新
- 01-11.NET開發(fā)人員關(guān)于ML.NET的入門學(xué)習(xí)
- 01-11.NET Core 遷移躺坑記續(xù)集之Win下莫名其
- 01-11.net core webapi jwt 更為清爽的認(rèn)證詳解
- 01-11docker部署Asp.net core應(yīng)用的完整步驟
- 01-11ASP.NET Core靜態(tài)文件的使用方法
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置