配置镜像构建部署流水线,网站实现自动部署🤣

7/9/2024 阿里云云服务器CI/CDdevops阿里云云效平台

# 前言

目前博客网站都是采用gitee+docker手动进行部署,每次编写完后,都需要提交到gitee仓库,然后在服务器上拉取,再手动执行docker命令构建镜像和部署。因为后面有计划要做一个以能够真实上线维护的标准来开发的项目,希望具有完备的运维、测试和开发系统以及开发规范和项目规模,所以决定先为这个博客网站的项目搭建部署流水线,实现自动部署,减少编写博客的心智负担,就当是先练练手、为后面铺路啦。

这里选择的是阿里云的云效平台,可以很方便的帮我们搭建CI/CD的流水线,是一个云devops平台。选择的原因有以下几点:

  1. 目前我的云服务器配置只有2核2G,如果要采用k8s+docker+jenkins会吃掉大量的服务器内存,而云效平台工作在云上,可以减少服务器的负担

  2. 云效平台免费且配置方便,就目前阶段来说,简单的配置已经完全够用了,并且项目目前也没有计划什么特别个性化的部署流程,就功能和效率来说,是最合适的

# 步骤

# 进入云效平台

注册和登陆云效平台,进入工作台后点击流水线

alt text

然后点击新建流水线,开始流水线的搭建,选择空模板即可

alt text

# 搭建流水线

# 添加流水线源

点击添加流水线源,我这里选择的是gitee,就以gitee为例子

如果是第一次使用,首先要添加配置服务链接,链接上自己的云服务器以及代码仓库。这里点击后跟着提示一步步做就好了。

配置好服务连接、代码库和分支后,因为希望自动部署,即只要代码提交到gitee仓库就能够自动触发流水线进行CI和CD,所以这里勾上开启代码源触发

alt text

点击Webhook右边的复制按钮,要回gitee的webhook里去配置

进入gitee,点击管理 > webHooks > 添加webHook

alt text

在url这里把刚刚复制的URL填写进去

alt text

然后点击添加,完成后回到云效,也点击添加按钮,咱继续配置~

# 配置镜像构建

通过配置流水线源,流水线在我们提交代码时,已经能够自动触发并获取到最新代码了,下一步需要进行镜像的构建

这里使用阿里云的个人镜像仓库,已经提前在阿里云添加好了,我们在这一步根据代码中的dockerfile配置文件,把项目打包成镜像并上传到阿里云的个人镜像仓库,以便后面的部署阶段能够拉取和部署

alt text

我的阿里云个人镜像仓库,如何创建个人镜像仓库可以参考上一篇博客:解决docker镜像失效的方法😎

alt text

接着配置镜像构建流水线,这里新建一个服务连接,然后选择准备好的镜像仓库。~~下面的标签我设置成固定标签了,方便后面部署时确定要拉取的镜像名。~~下面的dockerfile文件名要和项目里面的dockerfile对应~

alt text

改成固定标签会导致下次触发构建部署的时候镜像不更新,因为镜像已经存在了,就会默认采用缓存而不更新镜像。所以这里还是用默认的动态标签,用时间戳做key就好~

# 项目部署

接着配置流水线,目前已经将项目打包成镜像并上传到阿里云的镜像仓库了,我们现在要拉取刚刚上传的镜像,并进行容器部署

点击新任务,选择部署 > docker部署

alt text

接下来选择好主机组,如果第一次配置的话需要新建并添加主机,这里跟着步骤做就好

alt text

选择好主机组后就可以编写部署脚本了,流水线会帮自动我们执行这段脚本,实现自动部署~

docker stop moyuu-blog-container
docker rm moyuu-blog-container
docker run -itd -p 8085:3000 --name moyuu-blog-container registry.cn-guangzhou.aliyuncs.com/moyuu/moyuu-blog:${timestamp}

这是一段docker命令,先将已有的容器停止并清理,然后从个人镜像库拉取镜像,运行新的容器。个人仓库的地址可以在阿里云的镜像仓库看,后面记得接上我们之前设置的固定标签版本

因为博客网站已经是一个存在的项目了,如果是一个新项目,执行docker stop和docker rm时会报错哦,因为容器不存在! 这里命令行里面也可以直接使用前面设置的时间戳变量,获取对应的版本

点击保存并运行,看看配置是否成功

alt text

alt text

alt text

可以看到,容器里面也是远程镜像源了

至此已经完成了自动部署的配置了,后续只要提交代码到gitee仓库就能够自动进行镜像构建和部署。因为没有设置扫描、测试等环节,配置还是相当简单的~