.NET之Docker部署详细流程

开篇语

自己从头开始走一遍 docker 部署.net 的流程,作为一种学习总结,以及后续会写一些在该基础之上的文章。

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

创建项目

本次事例代码是用过 vs2019 创建的 ASP.NET Core Web API 项目

.NET 之 Docker 部署详细流程
image.png

目标框架是.Net5,无需身份验证,不配置 HTTPS(根据个人需求勾选),启动 Docker(我习惯于后期添加),启用 OpenAPI 支持(添加 swagger 文档)

.NET 之 Docker 部署详细流程
image.png

默认配置

创建完成后,我们查看项目目录为下

.NET 之 Docker 部署详细流程
image.png

我们直接 F5 启动项目,发现直接跳转一个 API 文档页面

.NET 之 Docker 部署详细流程
image.png

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();
        }
    }

 其他配置保持默认,启动项目

.NET 之 Docker 部署详细流程
image.png

生成镜像

添加 dockerfile

选中项目右键添加 docker 支持,本次部署在 windows 平台

.NET 之 Docker 部署详细流程
image.png

拉取基础镜像和 sdk,还原 nuget 包,重新生成,发布

此时项目的目录结构为

.NET 之 Docker 部署详细流程
image.png

运行命令

在文件资源管理器打开文件

.NET 之 Docker 部署详细流程
image.png

在上层目录下运行 cmd 输入命令

docker build -f .Net5ByDockerDockerfile -t net5sample .

在不同的目录下命令有些许差异,这点非常感谢我的朋友王老师

.NET 之 Docker 部署详细流程
image.png

注意:可能部分朋友在这一步会拉取官方镜像比较慢,可以配置 docker 加速器使用

通过 docker 客户端查看我们已经生成的镜像

.NET 之 Docker 部署详细流程
image.png

生成容器

本文通过Terminal软件执行命令

docker run --name net5sampleone -d -p 8060:80 net5sample

命令简述:

-d 后台运行

–name  容器名称

-p 端口映射

截至到这,我们已经把刚才的项目生成了容器,下面我们可以直接通过容器方法上面的项目

验证项目

通过浏览器访问地址:localhost:8060/swagger

.NET 之 Docker 部署详细流程
image.png

懵逼!!!这个时候不是应该出来 swagger 文档的界面吗?难道我们部署的方式有问题?

让我们访问下项目的接口

.NET 之 Docker 部署详细流程
image.png

说明我们的项目运行是正常的,仔细查看 swagger 配置后发现,因为为了安全默认不允许发布后出来 swagger 文档

.NET 之 Docker 部署详细流程
image.png

如果是测试环境或者特殊情况可以通过调整 swagger 配置位置来显示文档

通过 Postman 访问

添加用户

.NET 之 Docker 部署详细流程
image.png

查询用户

.NET 之 Docker 部署详细流程
image.png

删除用户

.NET 之 Docker 部署详细流程
image.png

再次运行查询接口数据已经为空了。


来源:鹏祥 ,作者 AZRNG

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...