模块部署技能
功能
本技能提供了一种通用的方法,用于部署包含以下条件的模块到指定环境:
- •包含
Dockerfile文件 - •包含
env目录,且目录下有对应环境的配置文件(如test.env) - •包含
deploy.sh部署脚本
适用场景
当用户需要:
- •部署一个模块到 test 环境
- •部署一个模块到 dev 环境
- •部署一个模块到其他自定义环境
使用方法
前提条件
- •
确保模块目录下存在以下文件和目录:
- •
Dockerfile:用于构建 Docker 镜像 - •
deploy.sh:部署脚本 - •
env/目录:包含环境配置文件 - •
env/<环境名>.env:对应环境的配置文件,如env/test.env
- •
- •
确保
env/<环境名>.env配置文件中包含以下必要的环境变量:- •
REMOTE_USER:远程服务器用户名 - •
REMOTE_PASSWD:远程服务器密码 - •
REMOTE_HOST:远程服务器主机地址 - •
REMOTE_PORT:远程服务器 SSH 端口 - •
REMOTE_PATH:远程服务器镜像存储路径 - •
REMOTE_COMPOSE_PATH:远程服务器 docker-compose 文件路径 - •
IMAGE_NAME:Docker 镜像名称 - •
SERVICE_NAME:服务名称
- •
部署命令
在模块目录下执行以下命令:
bash
bash deploy.sh <环境名>
例如,部署到 test 环境:
bash
bash deploy.sh test
部署流程
- •加载指定环境的配置文件
- •编译模块(如果需要)
- •本地构建 Docker 镜像
- •将镜像保存为 tar 文件
- •上传镜像到远程服务器
- •在远程服务器上加载镜像
- •备份旧镜像(如果存在)
- •为新镜像打标签
- •清理旧备份镜像
- •启动服务
- •清理临时文件
示例
示例 1:部署 podengine 模块到 test 环境
bash
cd app/podengine bash deploy.sh test
示例 2:部署其他模块到 dev 环境
bash
cd app/other-module bash deploy.sh dev
注意事项
- •确保本地已经安装 Docker 和 Go(如果模块需要编译)
- •确保远程服务器已经安装 Docker 和 docker-compose
- •确保本地和远程服务器之间网络通畅
- •确保远程服务器有足够的磁盘空间存储 Docker 镜像
- •确保配置文件中的环境变量正确无误
故障排查
常见错误
- •环境文件不存在:确保
env/<环境名>.env文件存在 - •缺少必要环境变量:检查配置文件中是否包含所有必要的环境变量
- •编译失败:确保本地已经安装 Go,且代码可以正常编译
- •镜像构建失败:检查 Dockerfile 是否正确
- •上传失败:检查网络连接和远程服务器的 SSH 配置
- •启动失败:检查远程服务器的 docker-compose 配置和服务依赖
解决方法
- •检查错误信息,确定具体问题
- •验证配置文件中的环境变量
- •验证本地和远程服务器的环境
- •验证网络连接
- •查看远程服务器的日志
如果问题仍然无法解决,请联系系统管理员或 DevOps 团队寻求帮助。