脚本简介
- 基于运维统一脚本中、17、平台管理下的Yapi管理平台部署
- 系统版本Centos7
- docker环境
脚本注解
- 该脚本快速部署yapi平台,已通过docker commit把对应的mongo、yapi服务封装至同一镜像中
- 应对应服务导致镜像相对较大,大约1.7G左右,启动时需要等待pull(根据网速情况确认)
- 采用init容器启动,mongo数据库通过system进行进程管理,单独使用镜像启动服务会出现服务启动失败的情况,建议配合脚本使用
执行方式
sh run.sh init v1.0.3
- 启动时已经运行在后台,日志可通过Ctrl+C进行取消即可
- 脚本提供两种方式
- 第一种初始化mongo数据,会覆盖所有的数据
- 第二种当前宿主机上已存在mongo的数据,直接启动容器即可
浏览器访问
用户名: admin@admin.com
密码: ymfe.org
- 使用方式自行参看官方文档即可
脚本内容
#!/bin/bash
envs="bcbx"
image_name="yapi"
yapi_port=8089
images_name="${envs}_${image_name}"
registry="registry.cn-hangzhou.aliyuncs.com/bcbx/${images_name}"
yapi_worker_dir="/opt/yapi"
mongo_dir="${yapi_worker_dir}/mongo-data"
info(){
echo -e "\033[32m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[36m$1\033[0m "
}
info1(){
echo -e "\033[31m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[91m$1\033[0m "
}
info2(){
echo -e "\033[91m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[34m$1\033[0m "
}
run_containerd(){
case $1 in
'init')
docker run -d --name ${image_name} --hostname ${image_name} -p ${yapi_port}:3000 \
-u root --privileged=true ${images} /usr/sbin/init ;;
'start')
docker run -d --name ${image_name} --hostname ${image_name} -p ${yapi_port}:3000 \
-v ${mongo_dir}/mongo:/var/lib/mongo -u root --privileged=true ${images} /usr/sbin/init
esac
}
run_init(){
[ -d ${mongo_dir} ] || mkdir -p ${mongo_dir}
cd ${mongo_dir}
docker cp ${image_name}:/var/lib/mongo .
}
start_run_yapi(){
run_images ${tag} start
docker exec ${image_name} chown -R mongod:mongod /var/lib/mongo
docker exec ${image_name} sh /opt/startup.sh &
sleep 3
info " 端口: ${yapi_port}"
info "用户名: admin@admin.com"
info " 密码: ymfe.org"
}
run_images(){
local registry_images="${registry}:${1}" status=$2
local images=`docker images --format {{.Repository}}:{{.Tag}}|grep ${registry_images}`
local num=`docker images --format {{.Repository}}:{{.Tag}}|grep ${registry_images}|wc -l`
if [ `docker ps -a| grep ${image_name}|wc -l` -eq 1 ];then
docker rm -f ${image_name} &>/dev/null
[ $? -eq 0 ] && info1 "${image_name} rm success"
run_containerd ${status}
elif [ ${num} -ne 1 ];then
info "Pull image ${registry_images},Please wait"
docker pull ${registry_images} >${log}/wikmd.log
[ $? -eq 0 ] && info "Pull image ${registry_images} success"
run_containerd ${status}
else
run_containerd ${status}
fi
}
rm_start(){
if [ `docker ps -a |grep ${image_name} |wc -l` -eq 1 ];then
docker rm -f ${image_name} &>/dev/null
[ $? -eq 0 ] && info1 "${image_name} rm success"
fi
}
run(){
local status=$1 tag=$2
if [ ${status} == "init" ];then
run_images ${tag} ${status}
run_init
start_run_yapi
elif [ ${status} == "start" ];then
start_run_yapi
fi
}
log(){
info2 "sh $0 init v1.0.3 初始化"
}
if [ $# -lt 2 ];then
log
exit -1
else
run $1 $2
fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)