?因?yàn)槲沂菑氖铝宋迥闏#工作的開發(fā),雖然最近不怎么用C#了,為了后續(xù)能用得上,簡單整理了一下使用dockerfile來部署一個非常微軟最基本的netcore api項(xiàng)目,親測成功,感興趣的朋友也可以學(xué)習(xí)一下。
1、創(chuàng)建一個NetCore API項(xiàng)目
首先創(chuàng)建一個netcore的api項(xiàng)目因?yàn)楸容^簡單就不介紹。
2、云服務(wù)部署
2.1 首先登錄云服務(wù)器創(chuàng)建一個測試目錄
mkdir /home/netCoreDemo/webapp
使用Linux的ftp工具將Visualstudio發(fā)布好的部署包上傳到云服務(wù)器的/home/netCoreDemo/webapp目錄中去,
2.2 新建dockerfile文件用來構(gòu)建鏡像。
內(nèi)容如下:
# 添加基礎(chǔ)鏡像:docker會從網(wǎng)絡(luò)下載這個鏡像
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
ENV ASPNETCORE_URLS=http://+:28080 #解決下面報錯的問題
#容器中系統(tǒng)的工作空間
WORKDIR /webapp
#拷貝當(dāng)前文件夾下的文件到容器中系統(tǒng)的工作空間(注意:“.”后面有空格)
COPY . /webapp
#設(shè)置Docker容器對外暴露的端口
EXPOSE 28080
#容器中使用 ["dotnet","系統(tǒng)啟動的dll"] 來運(yùn)行應(yīng)用程序
#使用ENTRYPOINT ["dotnet","系統(tǒng)啟動的dll"]
#也可以使用 CMD ["dotnet","系統(tǒng)啟動的dll"]推薦使用ENTRYPOINT
ENTRYPOINT ["dotnet", "test.dll"]
2.3 構(gòu)建鏡像
當(dāng)前dockerfile目錄執(zhí)行構(gòu)建鏡像命令
build -f dockerfile -t xm/netcoredemo:1.0 .

2.4 運(yùn)行鏡像
啟動運(yùn)行鏡像,推薦增加 -d參數(shù) 后臺啟動
docker run --name netcoredemo -p 28080:28080 xm/netcoredemo:1.0

后臺啟動命令
docker run -d --name netcoredemo -p 28080:28080 xm/netcoredemo:1.0
服務(wù)器直接測試接口是否正常
curl http://127.0.0.1:28080/weatherforecast

外網(wǎng)訪問測試準(zhǔn)備條件
確保你的云服務(wù)器外網(wǎng)端口開放
防火墻也要注意開放28080端口或者關(guān)閉防火墻
瀏覽器訪問:
http://你的公網(wǎng)IP:28080/weatherforecast?

刪除容器,需要先停止容器,然后再刪除
docker stop netcoredemo #先停止
docker rm netcoredemo #刪除容器
刪除鏡像
docker rmi xm/netcoredemo:1.0
部署可能遇到的問題 on the IPv6 loopback interface: 'Cannot assign requested address'
解決方案:
dockerfile增加這一行配置,因?yàn)檫@邊只是單純測試目的,不考慮使用nginx做代理。
ENV ASPNETCORE_URLS=http://+:28080