系列目录:

本系列分为项目集成、项目部署、架构演进三个方向,后续会根据情况调整文章目录。

开源地址:https://github.com/cyq1162/Taurus.MVC

本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单。

Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。

Taurus.MVC 微服务框架 入门开发教程:项目集成:2、客户端:ASP.NET Core(C#)项目集成:应用中心。

Taurus.MVC 微服务框架 入门开发教程:项目集成:3、客户端:其它编程语言项目集成:应用中心。

Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。

Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。

Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务的二次开发。

Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。

Taurus.MVC 微服务框架 入门开发教程:项目部署:2、让Kestrel支持绑定多个域名转发,替代Ngnix使用。

Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。

Taurus.MVC 微服务框架 入门开发教程:项目部署:4、微服务应用程序发布到Docker部署(上)。

Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。

Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。

Taurus.MVC 微服务框架 入门开发教程:架构演进:1、从单应用程序简单过渡到负载均衡。

Taurus.MVC 微服务框架 入门开发教程:架构演进:2、负载均到模块拆分负载。

Taurus.MVC 微服务框架 入门开发教程:架构演进:3、模块拆分负载到多级负载均衡。

Taurus.MVC 微服务框架 入门开发教程:运行示例:https://github.com/cyq1162/Taurus.MVC.MicroService.Demo

前言:

本篇教程,演示ASP.NET Core 微服务应用程序,如何最简方式发布到Docker中部署,并运行起来。

新手两个简易概念:

1、映像:可以理解为Class,用于定义;

2、容器:可以理解为Class的实例化对象,new 多几个就开多几个容器,用于运行。

1、开发环境安装Docker Desktop。

这个网上教程很多,可以官网教程下载安装:Docker Desktop - Docker

也可以在VS添加Docker相关的程序时,按提示安装,安装成功启动后界面大概是这样的:

说明:

如果后续启动就显示Docker Desktop Stopped..,按网上说的弄注册表还不行的话。

可以尝试输入以下命令:DockerCli.exe -SwitchDaemon

2、应用程序中添加Docker支持:

接着选择运行环境:Linux。

如果项目中引用了外部目录的工程文件,会提示错误:

解决:

1、要么引用的工程放到同一目录;
2、要么只引用其打包的dll;
3、要么直接就发布后再写编绎dockfile文件执行。

这里换个单纯引用dll的项目,继续:

说明:

默认创建的Dockkfile包含了编绎和发布的内容,所以看起来多了一些。

如果自己编绎后发布后,再执行Dockerfile,可以省简到最终5行即可,文章后面有。

EXPOSE参数的重点说明:

默认Docker是一个虚拟系统,里面只运行一个ASP.NET Core应用程序,所以端口全都有,任意端口都可以。

EXPOSE是指应用程序的启动的端口,应用程序运行什么端口,这里就修改成什么端口,保持一致即可,可以任意端口,这个不影响。

实际对外访问的端口,是后续创建容器的映射端口。

3、生成映像:

系统执行Dockerfile上的命令行,并等待输出日志,提示成功后:

到Docker Desktop中可以看到映像:

4、生成容器:

1、鼠标放上去,出来可执行菜单:点击Run:

2、填写容器名称,和对外映射的端口号(这个才是最终访问的端口号):

对于Taurus.mvc 框架的微服务,可以将映射的端口号,通过环境变量传递进去:

这个在第六篇会用到:6、微服务应用程序Docker部署实现多开。
本篇关于环境变量设置可以先忽略。

在ASP.NET Core应用程序,是无法直接获取Docker的运行信息的:

经过思考,可以预先读取系统环境变量;

而环境变量,可以在创建容器的时候再设置;

这样可以通过环境变更来实现传递某些信息到应用程序;

点Run,之后就可以了。

重复此步骤,通过添加不到的端口,可以新增节点,等同于程序复制。

5、检测容易是否可正常运行:

点击在浏览器运行:

总结一:

应用程序的Docker发布运行流程,目前来说,在Window系统开发时都可以通过可视化工具完成。

当然,也可以通过命令行完成,下面看一下最简命令行的过程:

1、创建Dockerfile,如果放到发布目录下,内容可以省略为:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 //引用ASP.Net Core 6 运行环境映像
WORKDIR /app //Docker虚拟机的虚拟目录,默认即可。
EXPOSE 80 //Docker虚拟机的虚拟端口,即应用程序在虚拟机的运行端口
COPY . . //复制当前目录的应用程序,到Docker中的虚拟目录。
ENTRYPOINT ["dotnet", "RegCenter.dll"] //运行时候,启用.NET Core程序的命令。

之后即可按命令行走起:

1、cd 到发布目录。

2、docker build -t  regcenter .    //创建映射 注意有个 . 号

3、docker run -d -p 8002:80 --name=8002 regcenter   //创建容器,容器外对运行端口是8002

命令也不多。

总结二:

到此为止,仅是在开发环境走了一遍布Docker的发布和运行。

那如何放到服务端呢?

一般思路,会先找到映像文件,再直接上传到服务器。

然而,Docker不允许这做,进而生成的映射文件,都是一些乱码,本地对这些文件,暂时是不可容易见的。

要发布到服务器上,目前的方式,需要将本地的镜像推送到DockerHub中心,然后服务器端再拉到本地运行。

这个过程,下一篇文章再介绍。

Taurus.MVC 微服务框架 入门开发教程:项目部署:4、微服务应用程序发布到Docker部署(上)。的更多相关文章

  1. Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  2. Taurus.MVC 微服务框架 入门开发教程:项目部署:2、让Kestrel支持绑定多个域名转发,替代Ngnix使用。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  3. Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  4. Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  5. Taurus.MVC 微服务框架 入门开发教程:项目集成:2、客户端:ASP.NET Core(C#)项目集成:应用中心。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  6. Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  7. Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  8. Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  9. Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

随机推荐

  1. @vue/cli3+配置build命令构建测试包&正式包

    上一篇博客介绍了vue-cli2.x配置build命令构建测试包和正式包,但现在前端开发vue项目大多数使用新版@vue/cli脚手架搭建vue项目(vue create project-name) ...

  2. 【Java面试】请你简单说一下Mysql的事务隔离级别

    一个工作了6年的粉丝,去阿里面试,在第一面的时候被问到"Mysql的事务隔离级别". 他竟然没有回答上来,一直在私信向我诉苦. 我说,你只能怪年轻时候的你,那个时候不够努力导致现在 ...

  3. golang的defer踩坑汇总

    原文链接:http://www.zhoubotong.site/post/50.html defer语句用于延迟函数调用,每次会把一个函数压入栈中,函数返回前再把延迟的函数取出并执行.延迟函数可以有参 ...

  4. 什么是AR技术?AR的价值究竟有多大?

    什么是AR技术? AR技术,解释来说就是增强现实(Augmented Reality),是一种实时地计算摄影机影像的位置及角度并加上相应图像.3D模型的技术,它的目标是把虚拟世界嵌套进真实世界进行互动 ...

  5. .Net Core 中使用工厂模式

    什么是工厂模式 工厂模式是最常用的设计模式之一,属于创建型模式. 有点: 解耦,可以把对象的创建和过程分开 减少代码量,易于维护 什么时候用? 当一个抽象类有多个实现的时候,需要多次实例化的时候,就要 ...

  6. ThreadLocal的简单理解

    目录 一.背景 二.ThreadLocal解决的问题 三.如何创建一个ThreadLocal实例 四.ThreadLocal如何做到线程变量隔离 1.理解3个类 2.看下set方法是如何实现的 3.看 ...

  7. 手把手教你用 Python 下载手机小视频

    今天为大家介绍使用 mitmproxy 这个抓包工具如何监控手机上网,并且通过抓包,把我们想要的数据下载下来. 启动 mitmproxy 首先我们通过执行命令 mitmweb 启动mitmproxy, ...

  8. maven编译 出现Process terminated

    问题: 解决方案: 在Settings中配置一下maven

  9. CesiumJS 2022^ 源码解读[0] - 文章目录与源码工程结构

    很高兴你能在浮躁的年代里还有兴趣阅读源代码,CesiumJS 至今已有十年以上,代码量也积累了三十多万行(未压缩状态). 我也很荣幸自己的文章能被读者看到,如果对你有帮助.有启发,点个赞就是对我最大的 ...

  10. 老掉牙的 synchronized 锁优化,一次给你讲清楚!

    我们都知道 synchronized 关键字能实现线程安全,但是你知道这背后的原理是什么吗?今天我们就来讲一讲 synchronized 实现线程同步背后的原因,以及相关的锁优化策略吧. synchr ...