DotNET 之 Docker 部署詳細流程

開篇語

自己從頭開始走一遍 docker 部署. net 的流程,作爲一種學習總結,以及後續會寫一些在該基礎之上的文章。

本次示例環境:vs2019、net5、docker、postman

創建項目

本次事例代碼是用過 vs2019 創建的 ASP.NET Core Web API 項目

目標框架是. NET 5,無需身份驗證,不配置 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 訪問

添加用戶

查詢用戶

刪除用戶


再次運行查詢接口數據已經爲空了。

轉自:Azing

鏈接:cnblogs.com/azrng/p/14730149.html

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/eOYv3w9SALVGFL5iL8PEJg