服务器部署v1.0方案问题分析

背景

后端项目

后端项目现在以SringBoot的jar包项目为主, 如果使用原生的java -jar jar包名的方式,如果有代码变动,每次需要在本地打好jar包,上传到服务器,重新执行操作,步骤繁琐,效率低下。
如果使用jenkins持续集成的技术,可以做到定时部署、自动化部署,但是还要编写很多的shell脚本,而且比较重,比较依赖硬件环境,并不适合小型项目的部署。详情可参看另一篇博客:部署SpringBoot的jar包项目让人头疼,不如使用jenkins+docker自动化部署jar包项目

前端项目

以前项目以npm打包和原生的html静态项目为主,如果是静态项目,nginx直接反向代理即可。如果是npm需要让nginx代理到项目的dist文件夹下的静态资源。还是与后端项目相同,如果有代码上的改动,需要再次重新部署。

以上的一些列原生方式,比较繁琐,在开发环境下,每天的代码改动量比较大,部署方式不够自动化和人性化。于是结合中小型项目的特点,诞生了服务器部署v1.0方案。

服务器部署v1.0方案

方案内容

详情可参看一下文档:

特点

  • 基于docker搭建基础服务的容器(例如mysql、nginx、redis…)
  • 在前后端docker镜像中安装git用于项目代码同步,安装vim用于基础文件的编辑
  • 在后端镜像中安装java8环境,安装maven进行项目打包
  • 在前端镜像中安装nvm实现自主切换node和npm的版本
  • 利用shell脚本进行docker容器的生成和前后端项目的部署

问题分析

服务器部署v1.0方案,虽然在一定程度上实现了自动化和规范化,但是在长达半年的部署过程当中,还是发现了很多的问题。具体问题如下:

  1. start.log日志文件输出内容太多,只需要启动日志
  2. 部署生产环境所需要的环境依赖流程复杂、耗时长
    项目需要依赖mysql、redis、nginx、rabbitmq…等,每次使用docker run命令去构建容器需要挨个构建和配置
    每次都需要手动使用docker run命令去构建容器,不能统一管理
  3. 部署方式有部分不够统一/规范,比如通过centos7_mvn_git_java8镜像构建的项目容器是将/root/project与容器的/project进行挂载,而nginx容器保留了之前将/root/project挂载到/var/www/html(为了兼容之前的项目)
  4. centos7_mvn_git_java8镜像构建的springboot后端项目容器中,每次进行项目重新部署都需要进入容器,执行相应的shell命令,相对繁琐
  5. 构建的容器重新部署可能导致容器的ip变更,进而引发nginx反向代理失败
  6. 构建的容器不能做到网络互通
  7. mysql没有备份方案
  8. mysql8版本容器启动时,缺少相应的配置
  9. 服务器中运行的docker容器不方便进行管理
  10. 考虑配置集群(mysql、redis、后端项目等)

服务器部署v2.0方案期望

根据以上的问题分析,所以决定迭代服务器部署的v2.0方案

  • 主要使用docker-compose对容器进行编排,做到有限的几条命令,可以构建好所有的基础服务(docker容器)
  • 使用portainer图像化管理工具对基础服务进行管理和监控
  • 编制更加自动化和规范化shell脚本
  • 提供规范的使用手册
  • 代码和文档放到github进行开源和不断迭代版本

服务器部署v2.0方案会尽快编制和更新…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值