#!/bin/bash

#镜像名
image="asr-server"
#镜像版本
ver="5.2.1"
#容器名
dname="asr" #资源目录配置
if [ $# -eq ] ; then
echo $
rfile=$
else
#资源文件路径
rfile="/mnt/resource/test/server/resources"
fi #日志目录解析
logfile="${rfile%/*}/log"
if [ ! -d $logfile ] ; then
mkdir -p $logfile
fi #环境检测
function check_environment
{
#打印提示信息
echo -e "start check environment ..." #设置最大文件描述符
nfile=`ulimit -n`
#知识点1:屏幕输入写法
if [ $nfile -lt ] ; then
cat >> /etc/security/limits.conf << EOF
* soft nofile
* hard nofile
EOF
fi #校验docker是否安装
docker images > /dev/null >&
if [ $? -ne ];then
echo "Please install docker first ."
exit
fi #打印提示信息
echo -e "check environment successful ." } #备份资源文件
function backup
{
#打印提示信息
echo -e "start backup old resources ..." #校验资源文件是否存在
if [ ! -d $rfile ] ; then
echo "${rfile} not exist ."
exit
fi #按日期备份
file_name=${rfile##*/}
#知识点2:日期相关语法
back_name="/tmp/${file_name}_$(date +%Y%m%d%H).tgz"
#tar主要支持相对路径备份,如果要备份绝对路径需要使用 -P 选项
tar -zcPf ${back_name} ${rfile} #清空资源目录下文件
rm -rf "${rfile}/*" #打印提示信息
echo -e "backup old resources successful ."
} #镜像文件安装
function intasll
{
#打印提示信息
echo -e "start intasll ..." #停止旧容器
container=$(docker ps|grep ${dname} | awk '{print $1}')
for i in $container
do
docker stop $i
docker rm $i
done
#打印提示信息
echo -e "stop old container successful ." #备份资源文件
backup #解压文件到临时目录
tar -zxf ./resources/resources.tgz -C ./tmp #强制拷贝
/usr/bin/cp -rf ./tmp/resources/* ${rfile}/ #清理临时目录
rm -rf ./tmp/* #获取当前镜像版本
cur_image=`docker images | grep ${image} | awk '{print $2}'` #知识点3:注意字符串为空判断 "shell变量" 需要加双引号
if [ -n "$cur_image" ] ; then
for j in $cur_image
do
if [ "$j" = "$ver" ] ; then
echo "${image}:${ver} already exist ."
exit 0
fi
done
fi #安装新镜像
docker load -i "./server/${image}.tar" #启动容器
docker run -p 50053:50053 -v $rfile:/home/asr/resources -v ${logfile}:/opt/asr/log -d --name ${dname} ${image}:${ver} #打印提示信息
echo -e "start docker successful ."
} check_environment
intasll

最新文章

  1. 通过队列解决Lucene文件并发创建索引
  2. HBase查找一条数据的过程
  3. Oracle性能调优
  4. Jenkins Master/Slave架构
  5. Vs2008几个快捷键
  6. Delphi2010中DataSnap技术网摘
  7. SDIBT2666——逆波兰表达式求值
  8. c#语音
  9. jffs2reset 实现分析
  10. 使用jquery.validate.js插件进行表单里控件的验证
  11. 【.NET】上传文件,生成缩略图
  12. iOS 原生模块 给 Javascript(ReactNative) 发送事件 (通知监听)
  13. 使用bitset实现毫秒级查询
  14. Scrapy-多层爬取天堂图片网
  15. 使用Docker快速搭建Nginx+PHP-FPM环境
  16. window nginx 基础命令
  17. Django 中使用ImgFiled 和FileFiled
  18. MassTransit&amp;Sagas分布式服务开发ppt分享
  19. SourceTree提交不了,报git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags origin master:master
  20. 模拟退火算法-旅行商问题-matlab实现

热门文章

  1. echarts地图 绘制部分上海市公交线路数据
  2. watch - 实时查看命令执行结果
  3. rds - mysql修改存储过程/函数的方式
  4. 微服务框架---搭建 go-micro环境
  5. Pytorch并行计算:nn.parallel.replicate, scatter, gather, parallel_apply
  6. fork以后子进程输出cout无法输出
  7. MapReduce内存调优
  8. OpenCV应用(4)雄迈相机网络取图
  9. python3-django+uwsgi+supervisor+nginx跳坑指南(记录)
  10. 第10组 Alpha冲刺(2/4)