docker-实战——启动yapi

脚本简介

  1. 基于运维统一脚本中、17、平台管理下的Yapi管理平台部署
  2. 系统版本Centos7
  3. docker环境

脚本注解

  1. 该脚本快速部署yapi平台,已通过docker commit把对应的mongo、yapi服务封装至同一镜像中
  2. 应对应服务导致镜像相对较大,大约1.7G左右,启动时需要等待pull(根据网速情况确认)
  3. 采用init容器启动,mongo数据库通过system进行进程管理,单独使用镜像启动服务会出现服务启动失败的情况,建议配合脚本使用

执行方式

sh run.sh init v1.0.3

在这里插入图片描述

  1. 启动时已经运行在后台,日志可通过Ctrl+C进行取消即可
  2. 脚本提供两种方式
  • 第一种初始化mongo数据,会覆盖所有的数据
  • 第二种当前宿主机上已存在mongo的数据,直接启动容器即可

浏览器访问
用户名: admin@admin.com
密码: ymfe.org
在这里插入图片描述

  1. 使用方式自行参看官方文档即可

脚本内容

#!/bin/bash
#该脚本用于init方式启动的镜像,可使用systemctl
#所有者:北城半夏
#
#当前版本
#v1.0.1
###################################################
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
           #-v ${mongo_dir}:/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 -it ${image_name} rm -rf /var/run/mongodb/mongod.pid && systemctl restart mongod 
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  初始化"
      #info2 "sh $0 start v1.0.3  启动(mongo目录已存在)"
}

if [ $# -lt 2 ];then
      log
      exit -1
 else
     run $1 $2
fi 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北城 半夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值