Taurus.MVC 微服务框架 入门开发教程:项目部署:4、微服务应用程序发布到Docker部署(上)。
系列目录:
本系列分为项目集成、项目部署、架构演进三个方向,后续会根据情况调整文章目录。
开源地址: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部署(上)。的更多相关文章
- Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:2、让Kestrel支持绑定多个域名转发,替代Ngnix使用。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:2、客户端:ASP.NET Core(C#)项目集成:应用中心。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
随机推荐
- Camunda如何配置和使用mysql数据库
Camunda默认使用已预先配置好的H2数据库,数据库模式和所有必需的表将在引擎第一次启动时自动创建.如果你想使用自定义独立数据库,比如mysql,请遵循以下步骤: 一.新建mysql数据库 为Cam ...
- Python教程:随机验证码生成和join 字符串
函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符) ...
- 【小程序自动化Minium】二、元素定位-Page接口中的 get_element() 与 get_elements()
UI自动化中的重要工作就是元素定位了,高效精准的定位方法可以让工作事半功倍. 在过去的一段web自动化经历中,使用的selenium库支持了多种定位方法,我们可以利用这些定位方法来做进一步封装,写出符 ...
- 写for循环快捷生成方式
在编写代码过程常常会使用到for循环,这里给大家介绍一种快捷写法len.fori+回车键(其中len为循环长度)举个栗子,编写10次循环 8.fori
- STC8H开发(十二): I2C驱动AT24C08,AT24C32系列EEPROM存储
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- 数据孤岛下的新破局 Real Time DaaS:面向 AP+TP 业务的数据平台架构
从传统数仓,到大数据平台,再到数据中台和湖仓一体新数据平台,在日益加重的数据孤岛困扰下,面向AP场景的解决方案可谓浩如烟海.但实际上,企业在TP类型业务上的投入和AP的比率却高达9:1,为什么没有为T ...
- JDBC(Java Database Connectivity)编写步骤
JDBC是代表一组公共的接口,是Java连接数据库技术: JDBC中的这些公共接口和DBMS数据库厂商提供的实现类(驱动jar),是为了实现Java代码可以连接DBMS,并且操作它里面的数据而声名的. ...
- 项目git commit时卡主不良代码:husky让Git检查代码规范化工作
看完 <前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) https://www.cnblogs.com/Yellow-ice/p/15349873 ...
- 牛客SQL刷题第三趴——SQL大厂面试真题
01 某音短视频 SQL156 各个视频的平均完播率 [描述]用户-视频互动表tb_user_video_log.(uid-用户ID, video_id-视频ID, start_time-开始观看时间 ...
- NC20566 [SCOI2010]游戏
题目链接 题目 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属 ...