?因為我是從事了五年C#工作的開發,雖然最近不怎么用C#了,為了后續能用得上,簡單整理了一下使用dockerfile來部署一個非常微軟最基本的netcore api項目,親測成功,感興趣的朋友也可以學習一下。
1、創建一個NetCore API項目
首先創建一個netcore的api項目因為比較簡單就不介紹。
2、云服務部署
2.1 首先登錄云服務器創建一個測試目錄
mkdir /home/netCoreDemo/webapp
使用Linux的ftp工具將Visualstudio發布好的部署包上傳到云服務器的/home/netCoreDemo/webapp目錄中去,
2.2 新建dockerfile文件用來構建鏡像。
內容如下:
# 添加基礎鏡像:docker會從網絡下載這個鏡像
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 #解決下面報錯的問題
#容器中系統的工作空間
WORKDIR /webapp
#拷貝當前文件夾下的文件到容器中系統的工作空間(注意:“.”后面有空格)
COPY . /webapp
#設置Docker容器對外暴露的端口
EXPOSE 28080
#容器中使用 ["dotnet","系統啟動的dll"] 來運行應用程序
#使用ENTRYPOINT ["dotnet","系統啟動的dll"]
#也可以使用 CMD ["dotnet","系統啟動的dll"]推薦使用ENTRYPOINT
ENTRYPOINT ["dotnet", "test.dll"]
2.3 構建鏡像
當前dockerfile目錄執行構建鏡像命令
build -f dockerfile -t xm/netcoredemo:1.0 .

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

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

外網訪問測試準備條件
確保你的云服務器外網端口開放
防火墻也要注意開放28080端口或者關閉防火墻
瀏覽器訪問:
http://你的公網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增加這一行配置,因為這邊只是單純測試目的,不考慮使用nginx做代理。
ENV ASPNETCORE_URLS=http://+:28080