• Shell——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

    在这里插入图片描述

    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 
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
  • 相关阅读:
    8个免费高质量视频、音频素材网
    【C++动态规划 多重背包】1774. 最接近目标价格的甜点成本|1701
    c# DataTable dt_JmMll,如果放在Task.Run(() =>)里面通过调用UpdateUIDatagridview()更新ui方法DataTable数据变0了
    内存管理---分页机制
    彻底解决win11系统0x80070032
    达梦数据库查看锁以及解锁
    【软件工程】作业3
    使用TinyPNG API压缩图片
    vue3.2 pinia的使用
    编程中的信号处理和系统 - 初学者指南
  • 原文地址:https://blog.csdn.net/qq_44246980/article/details/127638285