千鋒扣丁學(xué)堂Linux培訓(xùn)之Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目
2019-07-08 13:47:42
3563瀏覽
今天千鋒扣丁學(xué)堂
Linux培訓(xùn)老師給大家分享一篇關(guān)于在Linux服務(wù)器下利用Docker部署.netCore項(xiàng)目的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用.netCore具有一定的參考學(xué)習(xí)價(jià)值。
發(fā)布ASP.NETCore項(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文件夾 這里是兩個參數(shù)
WORKDIR /app //設(shè)置工作目錄為 '/app' 文件夾,即容器啟動默認(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)建成鏡像
dockerbuild-ttestcore.//-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),若啟動失敗顯示為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)錯日志
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í)候,會自動更新到容器內(nèi)。
但是當(dāng)有dll文件更新時(shí),需要手動重啟一下容器
docker restart testapp
以上,實(shí)現(xiàn)了將一個Asp.NetCoreMVC項(xiàng)目發(fā)布到docker中的全過程。目前容器中只有一個dotnet鏡像,通過地址訪問網(wǎng)站實(shí)際上直接訪問的Kestrel服務(wù)器。
一些額外的想法
Kestrel服務(wù)器只是一個輕量級的web服務(wù)器,并且不支持基于主機(jī)名的綁定(如果1臺服務(wù)器部署了多個ASP.NETCore站點(diǎn),每個站點(diǎn)需要使用不同的端口)
出于安全性考慮(包括但不限于適當(dāng)?shù)某瑫r(shí),大小的限制,以及并發(fā)連接限制等問題)需要在Kestrel和Internet之間加入一個反向代理服務(wù)器(IIS,Nginx或者Apache)。
以上就是敢于千鋒扣丁學(xué)堂Linux培訓(xùn)之Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,
想要學(xué)好Linux開發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專業(yè)老師制定的Linux學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Linux課程體系和Linux視頻教程供大家學(xué)習(xí),想要學(xué)好Linux開發(fā)技術(shù)的小伙伴快快行動吧??鄱W(xué)堂Linux技術(shù)交流群:422345477。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入HTML5前端開發(fā)VIP免費(fèi)公開課】
查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
Linux培訓(xùn)
Linux視頻教程
紅帽Linux視頻
Linux學(xué)習(xí)視頻
Linux入門視頻
紅帽RHCE/RHCSA考試