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就已经完成,接下来做部署任务的下载前端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
sh
#!/bin/bash
# 更新代码
git pull
export DJANGO_DEBUG=False
# # 停止并移除已存在的容器和网络
# docker-compose down
# # 拉取最新的镜像
# docker-compose pull
# 构建并启动容器
docker-compose down
docker-compose up -d
到现在第一种no build的更新方式就完成了