概要
本文记录jenkins上配置docker自动部署
所用插件
- Hudson SCP publisher plugin:拷贝部署文件到远程虚拟机
- Publish Over SSH:执行远程部署命令
- Environment Injector Plugin:注入变量
配置插件
- 配置scp插件:
在jenkins的系统设置里为scp配置远程虚拟机登录信息:
- 配置Publish over ssh插件:
在在jenkins的系统设置里为ssh配置远程虚拟机登录信息:
项目配置
下面的配置都在项目的配置页面
1. 配置所需环境变量
设置自动化脚本中需要用到的变量
2. 配置文件传输
3. 配置远程命令执行
自动化脚本如下:
# 工作目录
WORK_DIR="/root/karaf-deploy/${SERVICE_NAME}";
# 容器在运行
if [[ `docker ps | grep ${SERVICE_NAME}` ]];
then
# 停止运行中的容器
docker stop ${SERVICE_NAME}
fi;
# 解压缩文件
unzip -o ${WORK_DIR}/userStatusMgrBuilder-1.0-RELEASE.zip -d ${WORK_DIR};
# 替换主机IP
sed -i -e '/^host=.*$/{s/=.*$/=${HOST}/}' ${WORK_DIR}/etc/userStatusMgr.cfg;
# 启动
if [[ `docker ps -a | grep ${SERVICE_NAME}` ]];
then
# 容器已创建,只重启
docker restart ${SERVICE_NAME}
else
# 如果容器未创建,创建容器
docker run --name=${SERVICE_NAME} --net=host -d -i -t -v ${WORK_DIR}/deploy:/usr/karaf/deploy -v ${WORK_DIR}/etc:/usr/karaf/external_etc -v ${WORK_DIR}/log:/usr/karaf/data/log -p 8181:8181 -p 9090:9090 karaf-osgi
fi;