实现服务器线上服务的自动部署可以分为以下几个步骤:
-
编写 Makefile 文件:Makefile 文件主要用于定义部署相关的命令,包括拉取最新代码、构建镜像、上传镜像、重启服务等。
-
编写 shell 脚本:shell 脚本主要用于执行部署命令,并将命令结果输出到日志文件中。
-
配置 ssh 登录:通过配置 ssh 登录,实现远程登录服务器执行部署命令。
-
配置持续集成工具:将编写好的 Makefile 和 shell 脚本上传至持续集成工具中,并配置定时任务,实现定时自动部署。
以下是一个简单的示例 Makefile 文件:
APP_NAME=my_app
IMAGE_NAME=my_image
all: update build push restart
update:
git pull
build:
docker build -t $(IMAGE_NAME) .
push:
docker tag $(IMAGE_NAME) registry.cn-hangzhou.aliyuncs.com/my_registry/$(IMAGE_NAME)
docker push registry.cn-hangzhou.aliyuncs.com/my_registry/$(IMAGE_NAME)
restart:
ssh [email protected] 'cd /var/app/$(APP_NAME) && docker-compose pull && docker-compose up -d'
在 shell 脚本中,将 Makefile 中定义的部署命令以类似以下的方式执行即可:
#!/bin/bash
make all >> deploy.log 2>&1
通过配置 ssh 登录,可以实现在持续集成工具中远程登录服务器执行部署命令:
ssh [email protected] 'cd /var/app/$(APP_NAME) && docker-compose pull && docker-compose up -d'
最后,将 Makefile 和 shell 脚本上传至持续集成工具中,并配置定时任务即可实现定时自动部署。