開篇語
自己從頭開始走一遍docker部署.net的流程,作為一種學習總結,以及后續會寫一些在該基礎之上的文章。
本次示例環境:vs2019、net5、docker、postman
創建項目
本次事例代碼是用過vs2019創建的ASP.NET Core Web API項目

目標框架是.Net5,無需身份驗證,不配置HTTPS(根據個人需求勾選),啟動Docker(我習慣於后期添加),啟用OpenAPI支持(添加swagger文檔)

默認配置
創建完成后,我們查看項目目錄為下

我們直接F5啟動項目,發現直接跳轉一個API文檔頁面

Swagger 是一個規范和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。
修改配置
我基於個人習慣,我修改launchSettings.json文件,刪除IIS配置,刪除后如下所示:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:51539",
"sslPort": 0
}
},
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"Net5ByDocker": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": "true",
"applicationUrl": "http://localhost:5000"
}
}
}
刪除默認控制器,添加新的控制器UserController,在里面添加默認一些方法操作,如下
基於個人習慣的操作,也可以不刪除默認控制器
[Route("api/[controller]/[action]")]
[ApiController]
public class UserController : ControllerBase
{
public static List<string> userInfo = new();
[HttpGet]
public IEnumerable<string> Get()
{
return userInfo;
}
[HttpPost]
public List<string> Post([FromBody] string value)
{
if (!string.IsNullOrWhiteSpace(value))
userInfo.Add(value);
return userInfo.ToList();
}
[HttpDelete("{id}")]
public List<string> Delete(string id)
{
if (!string.IsNullOrWhiteSpace(id))
userInfo.Remove(id);
return userInfo.ToList();
}
}
其他配置保持默認,啟動項目

生成鏡像
添加dockerfile
選中項目右鍵添加docker支持,本次部署在windows平台

拉取基礎鏡像和sdk,還原nuget包,重新生成,發布
此時項目的目錄結構為

運行命令
在文件資源管理器打開文件

在上層目錄下運行cmd輸入命令
docker build -f .\Net5ByDocker\Dockerfile -t net5sample .
在不同的目錄下命令有些許差異,這點非常感謝我的朋友王老師

注意:可能部分朋友在這一步會拉取官方鏡像比較慢,可以配置docker加速器使用
通過docker客戶端查看我們已經生成的鏡像

生成容器
本文通過Terminal軟件執行命令
docker run --name net5sampleone -d -p 8060:80 net5sample
命令簡述:
-d 后台運行
--name 容器名稱
-p 端口映射
截至到這,我們已經把剛才的項目生成了容器,下面我們可以直接通過容器方法上面的項目
驗證項目
通過瀏覽器訪問地址:localhost:8060/swagger

懵逼!!!這個時候不是應該出來swagger文檔的界面嗎?難道我們部署的方式有問題?
讓我們訪問下項目的接口

說明我們的項目運行是正常的,仔細查看swagger配置后發現,因為為了安全默認不允許發布后出來swagger文檔

如果是測試環境或者特殊情況可以通過調整swagger配置位置來顯示文檔
通過Postman訪問
添加用戶

查詢用戶

刪除用戶

再次運行查詢接口數據已經為空了。
微信公眾號【鵬祥】
