如何使用Docker、Git和VPS部署项目

105次阅读
没有评论

问题描述

在使用VPS部署项目时,他的项目都是使用Docker容器化,并且有对应的GitHub仓库。目前他的部署过程是手动的,他想知道如何正确地在VPS上部署这些使用Docker容器化的GitHub应用程序。是否有更好的实践方法、脚本或工具可以使用?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

使用Webhook和自定义的bash脚本可以实现在GitHub发布事件后运行部署脚本。可以使用adnanh/webhook这个小型Go应用程序来运行你的部署脚本。你可以配置GitHub按照以下截图发送发布事件:
如何使用Docker、Git和VPS部署项目
然后,你可以使用github hub命令行工具创建与钩子规则中的正则表达式匹配的名称的发布,例如v1.2.3。这将触发发布Webhook。你可以在服务器上运行的容器中捕获到这个Webhook。你的部署脚本可以从发布事件的负载中获取发布号码,然后执行git pull命令拉取git标签v1.2.3并启动你的代码。请注意,你不必使用hub cli,如果你使用常规的git推送标签到你的仓库,也会触发发布事件。我们发现使用hub工具创建标签和GitHub发布非常有帮助。你可以使用github_changelog_generator自动生成发布说明,参考这个示例脚本。
使用类似的Webhook技术,OCD可以根据GitHub中的配置和标签驱动Kubernetes。我们使用相同的技术在AWS上部署我们的所有应用程序。你可以使用相同的技术来轻松驱动你的小型部署脚本。你只需要创建一个包含adnanh/webhook、json配置和部署脚本的Docker容器。这里是我们将webhook安装到容器中的位置,这里是我们复制规则的位置。由于它是一个Go应用程序,它不需要太多的内存就能完全自动化你的软件,基于git webhook事件。

方案2

使用脚本或工具来管理部署过程可能会增加复杂性,并且需要确保配置正确。
另一种方法是编写脚本或使用工具来控制部署过程。你可以使用docker run命令手动控制容器的启动顺序,或者使用一些第三方工具来管理容器的依赖关系。
以下是一个简单的bash脚本示例,可以在GitHub发布事件后启动部署脚本:

#!/bin/bash
# 连接到VPS
ssh root@xxx.xxx.xx.xxx
# 切换到项目目录
cd /root/www/project_dir
# 拉取最新代码
git pull
# 重新构建并启动容器
docker-compose up --build -d --force-recreate

在这个示例中,我们首先使用ssh命令连接到VPS。然后,使用cd命令切换到项目目录。接下来,使用git pull命令拉取最新的代码。最后,使用docker-compose up命令重新构建并启动容器。
请注意,这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。
以上是两种常见的部署方法,你可以根据自己的需求选择适合你的方法。希望对你有帮助!

正文完