Dvadmin使用阿里云flow实现自动化ci/cd部署更新项目

flow.aliyun.com/ 阿里云云效flow地址

说明:本教程有两种更新方式,一种是需要build镜像,前端代码更改,后端依赖新增(pip新增了包)这种情况适用,另一种是只是修改了业务代码,新增接口,前端页面代码修改等,就可以使用no build的方式,通过docker的volumes映射本机环境的代码目录与前后端容器做到文件挂载,实时读取,这种情况适用于只新增了接口,页面配置

1.环境准备:

  • 云服务器(阿里云,腾讯云,只要是公网能访问的服务器即可)
  • 服务器已经安装了docker,并且代码已上传到了服务器上

第一种no build方式

第一种no build方式需要修改docker-compose.yml文件,修改如下

yml 复制代码
dvadmin-web:
    container_name: dvadmin-web
    ports:
      - "80:8080"
    build:
      context: ./
      dockerfile: ./docker_env/web/Dockerfile
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./web/dist:/usr/share/nginx/html
      - ./docker_env/nginx/my.conf:/etc/nginx/conf.d/my.conf
    expose:
      - "8080"
    networks:
      network:
        ipv4_address: 177.8.0.11

重点就是这里volumes,把前端代码的web/dist目录和前端容器的nginx代理的前端目录做一个挂载映射,就能做到实时更新

2.创建一条流水线

流水线基本配置看起来这样

2.1 创建一个流水线源,一般是github,gitee,gitlab,coding上的代码仓库(需要先配置服务连接,自行配置,本文章不做教学)

2.2 新增一个步骤,这里我们需要编译前端代码,需要用到node构建的服务,后端代码不用build,直接通过docker-compose的配置volumes挂载到容器,所以后端更新理论上只用更新代码然后重启项目(docker-compose restart)即可

具体自定义镜像构建这里,任务步骤第一步添加一个node.js构建,然后需要把build后的编译物,也就是前端代码通过脚本下载到服务器的前端代码目录里既可以了

node.js构建也就是前端npm工具下载npm包然后build的步骤

经测试,pnpm的构建效率,下载npm包的效率速度远超于npm,cnpm,yarn这几个工具速度

sh 复制代码
cd web
npm install -g pnpm
pnpm install --registry=http://registry.npm.taobao.org
pnpm build

2.3 构建完成之后需要上传编译后的产物到阿里云的package制品仓库,然后再下载到我们自己服务器上(自己新增一个就好,没有特殊配置)

注意打包路径的配置

  1. 现在流水线步骤1就已经完成,接下来做部署任务的下载前端dist文件

具体部署步骤配置

这里就是把我们构建好的前端代码,下载到我们代码目录的前端目录(dvadmin/web/)下,会自动新建一个dist目录,这个目录其实就是前端代码build之后的产物,我们就是把前端编译后的js,html,css代码放到这里,只不过都是自动化处理,通过下载tgz压缩包,tar -xzvf解压之后得到文件夹

3.1 第三步的主机部署就比较简单,就是去执行项目文件里的一个sh脚本

部署脚本如下

sh 复制代码
cd /xxx/你的代码目录/
git pull
echo '当前目录文件:'
echo $(ls)
sh deploy.sh

deploy.sh

sh 复制代码
#!/bin/bash

# 更新代码
git pull

export DJANGO_DEBUG=False

# # 停止并移除已存在的容器和网络
# docker-compose down

# # 拉取最新的镜像
# docker-compose pull

# 构建并启动容器
docker-compose down
docker-compose up -d

到现在第一种no build的更新方式就完成了

相关推荐
编码浪子1 分钟前
构建一个rust生产应用读书笔记7-确认邮件2
开发语言·后端·rust
昙鱼12 分钟前
springboot创建web项目
java·前端·spring boot·后端·spring·maven
天天进步201517 分钟前
Vue项目重构实践:如何构建可维护的企业级应用
前端·vue.js·重构
白宇横流学长18 分钟前
基于SpringBoot的停车场管理系统设计与实现【源码+文档+部署讲解】
java·spring boot·后端
小华同学ai20 分钟前
vue-office:Star 4.2k,款支持多种Office文件预览的Vue组件库,一站式Office文件预览方案,真心不错
前端·javascript·vue.js·开源·github·office
APP 肖提莫22 分钟前
MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)
java·前端·算法
kirito学长-Java23 分钟前
springboot/ssm太原学院商铺管理系统Java代码编写web在线购物商城
java·spring boot·后端
问道飞鱼33 分钟前
【前端知识】强大的js动画组件anime.js
开发语言·前端·javascript·anime.js
k093334 分钟前
vue中proxy代理配置(测试一)
前端·javascript·vue.js
傻小胖36 分钟前
React 脚手架使用指南
前端·react.js·前端框架