Docker中部署.NET应用
一叶舟轻

Docker中部署.NET应用

一叶舟轻
2023-09-26 / 0 评论 / 16 阅读 / 正在检测是否收录...

Docker基础

什么是 Docker

Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。
是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。

有什么用

一致的运行环境

开发过程中一个常见的问题是环境一致性问题,由于开发环境,测试环境,生产环境不一致,导致有些bug并未在开发过程中被发现,而Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。从而不会再出现(这段代码在我机器上运行没问题啊)zz这类问题。

隔离的环境

比如当前有两个网站,两个应用部署在同一台服务器上,可能会出现一下的问题:

  • 如果其中一个应用出现了问题,导致CPU跑满,另一个应用也会受到牵连,将跟着一起凉凉了
  • 如果两个应用时不同的技术栈,两个应用的依赖文件都安装在同一个服务器上,可能会产生各种冲突或不兼容,造成各种奇奇怪怪摸不着头绪的问题

    持续交付和部署

    对于开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
    使用Docker可以通过定制应用镜像来实现持续集成,持续交付,部署。开发人员可以通过Dockerfile来进行镜像构建,并结合持续集成系统进行集成测试,而运维人员则可以在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署

    更轻松的迁移

    由于Docker确保了执行环境的一致性,使得应用的迁移更加容易,Docker可以在很多平台上运行,无论是物理机,虚拟机,公有云,私有云,甚至是笔记本,其运行结果是一致的,因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
    file

    Docker 部署 .net6 Dome

  • 创建一个项目,并启用docker支持
  • 可以直接再创建的时候就勾选
  • file
  • 也可以在创建后添加docker支持
  • file
  • 对Dockerfile文件做一些修改
  • file
  • 此处的 EXPOSE 为发布后的端口号
  • file
  • .net6 需要配置端口信息
  • file
  • 为了测试方便,本次允许访问Swagger
  • file
  • 打包发布
  • 由于docker是泡在linux上的,这里也要改成linux运行时
  • file
  • 定位到发布的文件夹
  • file
  • 开始构建镜像
  • file
  • 构建完成后查看镜像
  • file
  • 正常情况下还应该有个镜像仓库这一步(构建完成>>push到仓库>>服务器pull>>docker run),此处略过。
  • 到服务器上使用docker run添加一个容器
  • file
  • 到此时,程序已部署完成
  • file

Docker 部署 .net framework

  1. 添加docker支持,编辑下文件
  2. file
  3. 发布到文件夹,并将Dockerfile从bin里面复制到上一级根目录里
  4. file
  5. 开始构建镜像
  6. file
  7. 结论:可以,但不建议,因为打包太久,打包太大,几分钟都转不完那种。。。
    docker 怎么实现热更新
  8. 结论:不能热更新,docker 更新需要先删除容器,再使用新的镜像重新创建容器,这个过程服务将会中断
  9. 替代方案:配合nginx负载均衡实现灰度更新
  10. file
  11. 大致流程(利用容灾的思路):
  12. 先更新备用服务,此时由于主服务扛着,用户并不会受到干扰
  13. 当备用服务线上测试有问题,用旧镜像回退版本
  14. 测试无误后,将主服务停掉,此时会自动启用备用服务,用户也不会受到影响
  15. 主服务更新完重启后,将继续优先访问主服务
0

评论 (0)

取消