开篇语

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

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

创建项目

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


image.png

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


image.png

默认配置

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


image.png

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


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

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


image.png

生成镜像

添加dockerfile

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


image.png

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

此时项目的目录结构为


image.png

运行命令

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


image.png

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

docker build -f .\Net5ByDocker\Dockerfile -t net5sample .

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


image.png

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

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


image.png

生成容器

本文通过Terminal软件执行命令

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

命令简述:

-d 后台运行

--name 容器名称

-p 端口映射

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

验证项目

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


image.png

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

让我们访问下项目的接口


image.png

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


image.png

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

通过Postman访问

添加用户


image.png

查询用户


image.png

删除用户


image.png

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

微信公众号【鹏祥】

.Net之Docker部署详细流程的更多相关文章

  1. docker部署安装流程第一版

    docker部署安装流程第一版 1.以Dockerfile的方式进行构建docker 以cloud 新联盟为例 dockerfile from hub.c.163.com/library/maven  ...

  2. 笔记14:Docker 部署Python项目

    Docker 部署Python项目 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取 ...

  3. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  4. 在生产环境使用Docker部署应用

    导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...

  5. Docker部署Zabbix+Grafana监控

    Docker部署Zabbix+Grafana监控 环境 centos 7 ; Docker 17.12.0-ce ; docker-compose version 1.20.1 2018-4-1 当前 ...

  6. 使用Docker部署Spring boot项目

    Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...

  7. 如何使用Docker部署一个Go Web应用程序

    熟悉Docker如何提升你在构建.测试并部署Go Web应用程序的方式,并且理解如何使用Semaphore来持续部署. 简介 大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版 ...

  8. Docker日志管理--docker部署安装ELK (十一)--技术流ken

    Docker logs 对于一个运行的容器,Docker 会将日志发送到 容器的 标准输出设备(STDOUT)和标准错误设备(STDERR),STDOUT 和 STDERR 实际上就是容器的控制台终端 ...

  9. Windows 下 docker 部署 gitlab ci

    一.安装 1. 安装 docker Docker下载 注意:Windows 10 家庭版获取 之前的版本不能直接安装 Docker ,而是需要去安装 Docker Toolbox 我这里安装的是 Do ...

随机推荐

  1. 看完我的笔记不懂也会懂----MarkDown使用指南

    目录 语法 [TOC] 自动生成目录 1. 标题 2. 文本强调 3. 列表 4. 图片 5. 超链接 6. 文本引用 7. 分割线 8. 代码 9. 任务列表 (MPE专属) 10. 表格 11. ...

  2. PAT-1064(Complete Binary Search Tree)JAVA实现

    Complete Binary Search Tree PAT-1064 本次因为涉及到完全二叉排序树,所以可以使用数组的形式来存储二叉排序树 对输入序列排序后,得到的是中序遍历二叉排序树的序列.对这 ...

  3. js mysql 时间日期比较

    js代码 1 var date1 = '2017/2/13'; 2 //var date1 = new Date().toLocaleDateString(); 3 var date2 = '2017 ...

  4. MySQL使用入门--初识数据库

    MySQL使用入门 数据库概述 数据库是存放数据的仓库.在应用的开发中总是离不开数据的查询.处理.存储,例如图书管理系统就需要操纵和存储大量的数据.没有数据库之前我们使用文件存储数据,但是文件存储有很 ...

  5. mysql 基本指令 1

    desc 表名  --查看表属性 show create table 表名 \g;  --查看代码 alter table 表名 auto_increment=20;  --改自增的值 MySQL:自 ...

  6. 关于windows下服务一直处于启动ing的处理办法

    1,找到服务名称,xxxx 进入cmd 2,sc queryex xxxx,找到pid 3,taskkill /f /pid 123 就可以终止这个启动中的进程了

  7. SQL字符串传参

    technicianCode in('${techList.collect { it.technicianCode }.join("','")}')

  8. 01-Spring概述(总览)

    Spring概述 前言 Spring 发展至现在,俨然成为一个生态,但要理解其余的 Spring Boot.Spring Cloud 等框架,需要先对 Spring 的整个体系有一定的理解,因为其余的 ...

  9. mysql操作和详解

    温馨提示 mysql安装包里面:mysqld是服务端,mysql是客户端. mysqld其实是SQL后台程序(也就是MySQL服务器),它是关于服务器端的一个程序,mysqld意思是mysql dae ...

  10. Powerful Number 筛学习笔记

    Powerful Number 筛学习笔记 用途 \(Powerful\ number\) 筛可以用来求出一类积性函数的前缀和,最快可以达到根号复杂度. 实现 \(Powerful\ number\) ...