通过 Makefile 及 ssh 远程执行命令,实现服务器线上服务的自动部署

6 min read

实现服务器线上服务的自动部署可以分为以下几个步骤:

  1. 编写 Makefile 文件:Makefile 文件主要用于定义部署相关的命令,包括拉取最新代码、构建镜像、上传镜像、重启服务等。

  2. 编写 shell 脚本:shell 脚本主要用于执行部署命令,并将命令结果输出到日志文件中。

  3. 配置 ssh 登录:通过配置 ssh 登录,实现远程登录服务器执行部署命令。

  4. 配置持续集成工具:将编写好的 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 脚本上传至持续集成工具中,并配置定时任务即可实现定时自动部署。