多服务器自动部署解析

事件触发流程:

git提交->触发git webhook->post请求到对应php进行处理->php判断是什么项目,是否是开发分支,需要发送到哪个服务器->socket发送项目名到对应服务器->python接收到项目名后,对对应项目进行更新操作。
php的更新非常简单,git pull -r即可。下面着重介绍下前端要怎么进行部署。

首先,由于执行npm run build后,会先把之前的代码全部删掉,所以编译和部署需要拆分开,不能直接将dist文件夹软链接到目标文件夹,否则在编译过程中的几分钟,服务将无法访问。先编译得到目标代码,然后删除原有代码,再把更新后的代码更新上去。

原生版:

git更新,然后执行npm run build,没问题就删除原有代码,移动dist里面的内容到nginx(web服务器)配置的目录。

docker版:

由于一个服务器会有多个前端项目,为每一个前端项目创建一个容器过于浪费。所以采取的解决方案是:

  • 创建软链接/var/www/front,指向目标编译的源代码。
  • 将docker的app文件夹映射到/var/www/front文件夹去,同时需要映射/var/www文件夹本身(因为使用了软链接,app文件夹会直接映射到/var/www下的源码文件夹)。
  • 每个项目下都有html软链接,指向web服务器配置的目录。
  • 更新的时候修改/var/www/front映射的文件夹即可修改需要更新的项目。

更新的时候,首先删除原有/var/www/front软链接,创建新的指向目标项目的软链接。执行f_init容器,更新项目依赖。执行f_build容器,生成目标代码。删除html下的旧有代码,移动最新代码进去。前端代码更新完成。

你可能感兴趣的:(多服务器自动部署解析)