开篇语

自己从头开始走一遍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. 多Excel文件内容查询工具。

    多Excel文件内容查询工具. 告别繁琐重复的体力劳动,一分钟干完一天的活. 码云 github 下载 当需要在多个Excel表格中查询需要的信息是,一个文件一个文件的去查询非常麻烦. 虽然有其他方法 ...

  2. 关于Java高并发编程你需要知道的“升段攻略”

    关于Java高并发编程你需要知道的"升段攻略" 基础 Thread对象调用start()方法包含的步骤 通过jvm告诉操作系统创建Thread 操作系统开辟内存并使用Windows ...

  3. 使用Tomcat30分钟搭建个人服务器

    目录 一.服务器简介 二.安装教程 三.出现的问题 一.服务器简介 Tomcat服务器是一个Apache软件资金会的开源项目,实现了Servlet,JSP,EL,WebSocket协议. 二.安装教程 ...

  4. 使用NATAPP内网穿透工具

    准备资料 netapp客户端 百度云下载: 官网下载:https://natapp.cn/#download 按照自己的需求进行下载 可以访问到本地的web服务 下载后解压,获得natapp_wind ...

  5. PAT-1086(Tree Traversals Again)Java语言实现+根据中序和前序遍历构建树并且给出后序遍历序列

    Tree Traversals Again Tree Traversals Again 这里的第一个tip就是注意到非递归中序遍历的过程中,进栈的顺序恰好是前序遍历的顺序,而出栈的顺序恰好是中序遍历的 ...

  6. Fedora/Centos使用dnf/yum为Firefox安装Flash,两行命令超简单

    Fedora/Centos使用dnf/yum为Firefox安装Flash,两行命令超简单 Flash已死,我想这个方法应该已经失效了吧,毕竟是从adobe的官方下载的,应该是撤链接了,我也很久没安装 ...

  7. c++ 反汇编 表达式

    有符号数溢出: void BreakFor() { for (int i = 1; i > 0; i++) { printf("%d \r\n", i); } } 上面的程序 ...

  8. 【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等

    什么是 PaaS?Platform as a Service 平台即服务 (PaaS) 是云中的完整开发和部署环境,你可以使用其中资源交付内容,从基于云的简单应用到启用云的复杂企业应用程序皆可.你以即 ...

  9. Mybatis日志源码探究

    一.项目搭建 1.pom.xml <dependencies> <dependency> <groupId>log4j</groupId> <ar ...

  10. 在M1芯片的Mac系统上做.net core开发靠谱吗?

    作为一个7年老.NET程序员,最近几年苹果慢慢接替微软,成为我心中最酷的科技公司. 为什么我会选择Mac os作为我的开发环境? 很多做.net的同学都使用Windows系统作为自己的开发环境,我其实 ...