成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Shell腳本構(gòu)建Docker 半自動化編譯打包發(fā)布應(yīng)用操作

Shell腳本構(gòu)建Docker 半自動化編譯打包發(fā)布應(yīng)用操作

熱門標簽:10086外包用的什么外呼系統(tǒng) 麗江真人語音電話外呼系統(tǒng) 河南防封號電銷機器人是什么 400電話辦理介紹信 宿城區(qū)電話機器人找哪家 打400電話怎么辦理收費 怎么找到?jīng)]有地圖標注的店 上海申請高400開頭的電話 福州企業(yè)電銷機器人排名

Docker 發(fā)布的方式為實現(xiàn)DevOps(自動化運維,需要配置 代碼管理工具如Git的hook來實現(xiàn)提交編譯、打包、發(fā)布等一系列事件控制)提供了諸多方便,輔助于Shell腳本可以很好的配合起來。

Docker鏡像可以通過自動化編譯,也可以通過導入鏡像的方式來獲得。

本文的題目叫:Shell腳本構(gòu)建Docker 半自動化編譯打包發(fā)布,因為我這里還沒跟代碼管理關(guān)聯(lián)起來。

Shell腳本不同實現(xiàn)

導入鏡像方式(鏡像文件rtvsweb-publish.tar):

構(gòu)建發(fā)布方式(依靠Dockerfile來構(gòu)建):

Shell Docker構(gòu)建發(fā)布腳本工具核心install.sh

#! /bin/bash
##file:rtvs.sh
##company:cvnavi.com
##author:Pengjunlin
echo "當前執(zhí)行文件......$0"
##################################變量定義##################################
DOCKER_IMAGE_IS_MATCH_TAR_FILE="false"
DOCKER_RTVSWEB_CONTAINER_NAME="rtvsweb-publish"
DOCKER_RTVSWEB_NEW_VERSION=""
DOCKER_RTVSWEB_FIRST_VERSION=1
DOCKER_RTVSWEB_SECOND_VERSION=0
DOCKER_RTVSWEB_THIRD_VERSION=0
DOCKER_RTVSWEB_VERSION_TAG=""
DOCKER_CONTAINER_TEMP_HOST=""
DB_REDIS_CONNECTION_STRING=""
DB_MYSQL_CONNECTION_STRING=""
DB_MYSQL_HOST=""
MASTER_LAN_IP=""
SYSTEM_ALLOW_TO_SET="false"
###################################函數(shù)定義#######################################
function init_files()
{
	# 創(chuàng)建rtvs目錄
	if [[ ! -d "/usr/local/rtvs" ]]; then
		echo "創(chuàng)建容器映射路徑.... /usr/local/rtvs"
		mkdir /usr/local/rtvs
	fi
	# 復(fù)制VersionConfig.xml(第一次做完全復(fù)制,若有變動需要手動修改)
	if [[ -f "./VersionConfig.xml" ]]; then
		if [[ ! -f "/usr/local/rtvs/VersionConfig.xml" ]]; then
			echo "拷貝一份XML配置文件: ./VersionConfig.xml /usr/local/rtvs/VersionConfig.xml"
			cp VersionConfig.xml /usr/local/rtvs/VersionConfig.xml
		fi
	else
		echo "缺少./VersionConfig.xml文件...已退出安裝!"
		exit
	fi
	# 復(fù)制SettingConfig.xml(第一次做完全復(fù)制,若有變動需要手動修改)
	if [[ -f "./SettingConfig.xml" ]]; then
		if [[ ! -f "/usr/local/rtvs/SettingConfig.xml" ]]; then
			echo "拷貝一份XML配置文件: ./SettingConfig.xml /usr/local/rtvs/SettingConfig.xml"
			cp SettingConfig.xml /usr/local/rtvs/SettingConfig.xml
		fi
	else
		echo "缺少./SettingConfig.xml文件...已退出安裝!"
		exit
	fi
	# 復(fù)制log4.config(第一次做完全復(fù)制,若有變動需要手動修改)
	if [[ -f "./log4.config" ]]; then
		if [[ ! -f "/usr/local/rtvs/log4.config" ]]; then
			echo "拷貝一份日志配置文件: ./log4.config /usr/local/rtvs/log4.config"
		  cp log4.config /usr/local/rtvs/log4.config
		fi
	else
		echo "缺少./log4.config文件...已退出安裝!"
		exit
	fi
}
function mysql_create_table()
{
	if [[ -f "./mysql_create_table.sh" ]]; then
		echo "數(shù)據(jù)庫腳本賦值權(quán)限......"
		# 為執(zhí)行文件添加權(quán)限
		chmod a+x mysql_create_table.sh
	else
		echo "缺少./mysql_create_table.sh文件...已退出安裝!"
	  exit
	fi
	# 執(zhí)行mysql數(shù)據(jù)庫表創(chuàng)建
	./mysql_create_table.sh
	if [[ $? -eq 0 ]]; then
		echo "./mysql_docker_install.sh 執(zhí)行完成!"
	else
		exit
	fi
}
 
function docker_install()
{
	echo "檢查Docker......"
	docker -v
  if [ $? -eq 0 ]; then
    echo "檢查到Docker已安裝!"
  else
  	echo "安裝docker環(huán)境..."
    curl -sSL https://get.daocloud.io/docker | sh
    echo "安裝docker環(huán)境...安裝完成!"
  fi
  # 創(chuàng)建公用網(wǎng)絡(luò)==bridge模式
  #docker network create share_network
}
 
function mysql_install(){
	install_type=$1
 
	if [[ "$install_type" == "by_local_mysql_installer" ]]; then
		#statements
		echo "暫不支持wget本地下載安裝,已退出!"
		exit 1
	fi
 
	if [[ "$install_type" == "by_docker_mysql_installer" ]]; then
		#statements
		docker_mysql_install
	fi
 
	if [[ "$install_type" == "by_smart_installer" ]]; then
		#statements
		if [[ `netstat -lanp|grep tcp|grep 3306|wc -l` == 1 ]]; then
			echo "檢測到mysql已在本機安裝!"
			# 打印一下mysql版本
			echo "檢測到mysql版本:"
			mysql --version
			# 執(zhí)行創(chuàng)建Mysql數(shù)據(jù)庫腳本
		  mysql_create_table
			if [[ $? -eq 0 ]]; then
				echo "本地MySQL腳本初始化完成!"
			else
				echo "本地MySQL腳本初始化失敗!"
				exit 1
			fi
		  DB_MYSQL_HOST="localhost"
		else
			docker_mysql_install
		fi
	fi
}
 
function docker_mysql_install(){
	echo "安裝Docker Mysql環(huán)境..."
	if [[ -f "./docker_mysql_install.sh" ]]; then
		if [[ -f "./docker_mysql_create_table.sh" ]]; then
			echo "拷貝一份容器執(zhí)行文件: ./docker_mysql_create_table.sh /usr/local/docker_mysql_create_table.sh"
			cp docker_mysql_create_table.sh /usr/local/docker_mysql_create_table.sh
		else
			echo "缺少./docker_mysql_create_table.sh文件...已退出安裝!"
		  exit 1
		fi
		# 為執(zhí)行文件添加權(quán)限
		chmod a+x docker_mysql_install.sh
		# Dokcer方式安裝Mysql
		./docker_mysql_install.sh
		if [[ $? -eq 0 ]]; then
			echo "./docker_mysql_install.sh 執(zhí)行完成!"
			# 休10秒鐘
			echo "休眠等待10s,等待Docker執(zhí)行完成......"
			sleep 10s
			# 測試打印mysql信息
			print_docker_mysql_info
		else
			echo "./docker_mysql_install.sh 執(zhí)行過程中出現(xiàn)錯誤,已退出安裝!"
		  exit 1
		fi
	else
		  echo "缺少./docker_mysql_install.sh文件...已退出安裝!"
		  exit 1
	fi
}
 
function docker_container_ip() {
  DOCKER_CONTAINER_TEMP_HOST=` docker inspect --format '{{ .NetworkSettings.IPAddress }}' $1`
}
 
function init_docker_master_ip(){
	out=0
	for i in `ip a |grep inet[^6]|grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}'`; do
		OLD_IFS="$IFS" 
		IFS="." 
		arr=($i) 
		IFS="$OLD_IFS" 
		for s in ${arr[@]} ;do 
			if [[ $s -eq "192" ]]; then
				 echo "$i" 
				 MASTER_LAN_IP=$i
				 out=1
				 break
			fi
		done
		if [[ $out -eq 1 ]]; then
			break
		fi
	done
}
 
function print_docker_mysql_info()
{
	echo "腳本執(zhí)行Mysql信息驗證:..."
	if [[ -f "./docker_mysql_validator.sh" ]]; then
		echo "拷貝一份容器執(zhí)行文件: ./docker_mysql_validator.sh /usr/local/docker_mysql_validator.sh"
		cp docker_mysql_validator.sh /usr/local/docker_mysql_validator.sh
	else
		echo "缺少./docker_mysql_validator.sh文件...已退出安裝!"
		exit
 	fi
 
	# 映射copy文件路徑到docker容器
	docker cp /usr/local/docker_mysql_validator.sh mysql5.7:/usr/local/docker_mysql_validator.sh
 
	docker exec -it mysql5.7 /bin/bash -c "sh /usr/local/docker_mysql_validator.sh"
	if [[ $? -eq 0 ]]; then
		echo "./docker_mysql_validator.sh 執(zhí)行完成!"
 
		echo "MySQL容器Host:"
		docker_container_ip mysql5.7 
		echo "當前mysql5.7實例IP=$DOCKER_CONTAINER_TEMP_HOST"
		#echo "MySQL容器network 相關(guān)信息:"
		#docker network inspect share_network
    #echo "MySQL容器link相關(guān)信息:"
		#cat /etc/hosts
	else
		echo "./docker_mysql_validator.sh 執(zhí)行過程中出現(xiàn)錯誤,已退出安裝!"
		exit
	fi
	#link 訪問方式
	DB_MYSQL_HOST="mysql5.7"
}
 
function destory_docker_service()
{
	# 停止容器
	for i in [ `docker ps ` ]; do
		if [[ "$i" == "rtvsweb-publish" ]]; then
			echo "嘗試停止$DOCKER_RTVSWEB_CONTAINER_NAME容器..."
		  docker stop $DOCKER_RTVSWEB_CONTAINER_NAME
		fi
	done
  # 刪除容器
	for i in [ `docker ps -a` ]; do
		if [[ "$i" == "rtvsweb-publish" ]]; then
			echo "嘗試刪除$DOCKER_RTVSWEB_CONTAINER_NAME容器..."
		docker rm $DOCKER_RTVSWEB_CONTAINER_NAME
		fi
	done
}
 
function docker_build_image()
{
	# 清理容器(保留歷史構(gòu)建的鏡像)
	destory_docker_service
 
	if [[ $? -eq 0 ]]; then
		echo "應(yīng)用服務(wù)容器和鏡像已處理,配置文件已完成復(fù)制!"
	else
		exit 1
	fi
  
	echo "Docker鏡像構(gòu)建......cmd:(docker build -t rtvsweb:$DOCKER_RTVSWEB_NEW_VERSION .)"
	docker build -t rtvsweb:$DOCKER_RTVSWEB_NEW_VERSION .
 
	# 判斷是否有鏡像,存在時創(chuàng)建相應(yīng)的容器實例
	for i in [ `docker images` ]; do
		#statements
		if [[ "$i" == "$DOCKER_RTVSWEB_NEW_VERSION" ]]; then
			DOCKER_IMAGE_IS_MATCH_TAR_FILE="true"
			echo "已經(jīng)找到最新構(gòu)建的鏡像!"
			run_docker_service_image
			break
		fi
	done
	if [[ $DOCKER_IMAGE_IS_MATCH_TAR_FILE == "false" ]]; then
		echo "構(gòu)建鏡像未匹配到最新版本,已退出安裝!"
		exit 1
	fi
 
	echo "構(gòu)建后的docker images鏡像列表:"
	docker images
 
	echo "當前正在運行的Docker容器實例列表:"
	docker ps
}
 
function run_docker_service_image()
{
	echo "正在啟動docker 服務(wù)容器......"
	# run 的參數(shù)設(shè)置參考VS項目啟動的設(shè)置--privileged=true 獲取管理員權(quán)限
	# ===bridge 橋接模式
	#docker run -it --name=$DOCKER_RTVSWEB_CONTAINER_NAME --net="bridge" --dns 8.8.8.8 --network share_network --network-alias $4 -v /usr/local/rtvs/error_log:/app/Error_log -v /usr/local/rtvs/log_file:/app/LogFile -v /usr/local/rtvs/mydata:/MyData -v /usr/local/rtvs/videocache:/MyVideo -v /usr/local/rtvs/SettingConfig.xml:/app/SettingConfig.xml -p 38067:80 -p 44383:443 -p 18000:18000 -p 18002:18002 -p 19700:19700 -p 19702:19702 -p 19703:19703 -d $DOCKER_RTVSWEB_IMAGE_TAG_NAME
	if [[ $DB_MYSQL_HOST == "mysql5.7" ]]; then
		# ===link 鏈接模式
		echo "rtvsweb--容器運行---鏈接模式"
		docker run -it --name $DOCKER_RTVSWEB_CONTAINER_NAME --privileged=true --link mysql5.7:mysql5.7 -v /usr/local/rtvs:/MyData -e MyDataPath=/MyData -p 38067:80 -p 44383:443 -p 18000:18000 -p 18002:18002 -p 19700-19719:19700-19719 -p 30888-30889:30888-30889 -d rtvsweb:$DOCKER_RTVSWEB_NEW_VERSION
	else
		# ===普通模式
		echo "rtvsweb--容器運行---普通模式"
		docker run -it --name $DOCKER_RTVSWEB_CONTAINER_NAME --privileged=true -v /usr/local/rtvs:/MyData -e MyDataPath=/MyData -p 38067:80 -p 44383:443 -p 18000:18000 -p 18002:18002 -p 19700-19719:19700-19719 -p 30888-30889:30888-30889 -d rtvsweb:$DOCKER_RTVSWEB_NEW_VERSION
	fi
}
 
####################工具類和流程定制################################
 
function editXml()
{
  val=`echo ${@:3}`
  echo "正在修改XML文件:$1...."
  echo "正在修改XML文件:[0]=$1,[1]=$2,[2]=$val"
  echo "XML文件$2標簽 value=$val"
  sed -i "s/<$2>.*<\/$2>/<$2>${val}<\/$2></g" $1
}
 
function init_mysql_conn()
{
	if [[ "$DB_MYSQL_HOST" == "localhost" ]]; then
		mysql="Database=filecache;Data Source=$MASTER_LAN_IP;port=3366;User Id=rtvsweb;Password=rtvs2018;charset=utf8;pooling=true"
		sed -i "s/<MysqlConnectionString>.*<\/MysqlConnectionString>/<MysqlConnectionString>$mysql<\/MysqlConnectionString>/g" /usr/local/rtvs/SettingConfig.xml
	  DB_MYSQL_CONNECTION_STRING=`grep -E -o -e '<MysqlConnectionString>.+</MysqlConnectionString>' /usr/local/rtvs/SettingConfig.xml | sed 's/<MysqlConnectionString>//g'|sed 's/<\/MysqlConnectionString>//g'`
	else
		mysql="Database=filecache;Data Source=mysql5.7;port=3306;User Id=rtvsweb;Password=rtvs2018;charset=utf8;pooling=true"
		sed -i "s/<MysqlConnectionString>.*<\/MysqlConnectionString>/<MysqlConnectionString>$mysql<\/MysqlConnectionString>/g" /usr/local/rtvs/SettingConfig.xml
	  DB_MYSQL_CONNECTION_STRING=`grep -E -o -e '<MysqlConnectionString>.+</MysqlConnectionString>' /usr/local/rtvs/SettingConfig.xml | sed 's/<MysqlConnectionString>//g'|sed 's/<\/MysqlConnectionString>//g'`
	fi
} 
 
function editSpecificConfig()
{
  init_mysql_conn
	echo "獲取/usr/local/rtvs/SettingConfig.xml信息..."
	cat /usr/local/rtvs/SettingConfig.xml
 
  # 判斷是否可以設(shè)置
	if [[ "$SYSTEM_ALLOW_TO_SET" == "true" ]]; then
		read -p ">>>是否修改Redis配置連接字符串?y/n:" ans
		echo "$ans"
		if [[ "$ans" == "y" ]]; then
			read -p "請輸入Redis配置連接字符串:" redis
			echo "新的Redis連接字符串:$redis"
	    sed -i "s/<RedisExchangeHosts>.*<\/RedisExchangeHosts>/<RedisExchangeHosts>$redis<\/RedisExchangeHosts>/g" /usr/local/rtvs/SettingConfig.xml
			DB_REDIS_CONNECTION_STRING=`grep -E -o -e '<RedisExchangeHosts>.+</RedisExchangeHosts>' /usr/local/rtvs/SettingConfig.xml | sed 's/<RedisExchangeHosts>//g'|sed 's/<\/RedisExchangeHosts>//g'`
			echo "獲取已修改的Redis配置連接字符串...RedisExchangeHosts=$DB_REDIS_CONNECTION_STRING"
		fi
 
		read -p ">>>是否修改Mysql配置連接字符串?y/n:" ans
		echo "$ans"
		if [[ "$ans" == "y" ]]; then
			read -p "請輸入Mysql配置連接字符串:" mysql
			echo "新的Mysql連接字符串:$mysql"
	    sed -i "s/<MysqlConnectionString>.*<\/MysqlConnectionString>/<MysqlConnectionString>$mysql<\/MysqlConnectionString>/g" /usr/local/rtvs/SettingConfig.xml
			DB_MYSQL_CONNECTION_STRING=`grep -E -o -e '<MysqlConnectionString>.+</MysqlConnectionString>' /usr/local/rtvs/SettingConfig.xml | sed 's/<MysqlConnectionString>//g'|sed 's/<\/MysqlConnectionString>//g'`
			echo "獲取已修改的Mysql配置連接字符串...MysqlConnectionString=$DB_MYSQL_CONNECTION_STRING"
		fi
	fi
}
 
function remoteRedisAndMysqlConfig()
{
 
	echo "獲取/usr/local/rtvs/SettingConfig.xml信息..."
	cat /usr/local/rtvs/SettingConfig.xml
	# 設(shè)置Redis連接字符串
	read -p "是否修改Redis配置連接字符串?y/n:" ans
	echo "$ans"
	if [[ "$ans" == "y" ]]; then
		read -p "請輸入Redis連接字符串:" redis
		echo "新的Redis連接字符串:$redis"
		sed -i "s/<RedisExchangeHosts>.*<\/RedisExchangeHosts>/<RedisExchangeHosts>$redis<\/RedisExchangeHosts>/g" /usr/local/rtvs/SettingConfig.xml
		DB_REDIS_CONNECTION_STRING=`grep -E -o -e '<RedisExchangeHosts>.+</RedisExchangeHosts>' /usr/local/rtvs/SettingConfig.xml | sed 's/<RedisExchangeHosts>//g'|sed 's/<\/RedisExchangeHosts>//g'`
		echo "獲取已修改的Redis配置連接字符串...RedisExchangeHosts=$DB_REDIS_CONNECTION_STRING"
	fi
	
 
	read -p "是否修改Mysql配置連接字符串?y/n:" ans
	echo "$ans"
	if [[ "$ans" == "y" ]]; then
		read -p "請輸入Mysql連接字符串:" mysql
		echo "新的Mysql連接字符串:$mysql"
		sed -i "s/<MysqlConnectionString>.*<\/MysqlConnectionString>/<MysqlConnectionString>$mysql<\/MysqlConnectionString>/g" /usr/local/rtvs/SettingConfig.xml
		DB_MYSQL_CONNECTION_STRING=`grep -E -o -e '<MysqlConnectionString>.+</MysqlConnectionString>' /usr/local/rtvs/SettingConfig.xml | sed 's/<MysqlConnectionString>//g'|sed 's/<\/MysqlConnectionString>//g'`
		echo "獲取已修改的Mysql配置連接字符串...MysqlConnectionString=$DB_MYSQL_CONNECTION_STRING"
	fi
	
}
 
function help()
{
	echo "*******************************************"
	echo "*********    調(diào)用方法說明  ************"
	echo "*******************************************"
	echo "查看核心配置文件:cat ./SettingConfig.xml"
	echo "幫助方法說明:sh ./install.sh help"
	echo "修改Redis和MySQL連接字符串:sh ./install.sh editXml [XMLFilePath] [tag] ['value'] "
  echo "********************************************"
	echo "*********    快速定制安裝  *************"
	echo "********************************************"
	echo "1、執(zhí)行本地Mysql安裝(wget下載文件安裝...比較費時): sh ./install.sh by_local_mysql_installer"
	echo "2、執(zhí)行Docker Mysql安裝 : sh ./install.sh by_docker_mysql_installer"
	echo "3、智能檢測決定Mysql安裝方式(如果本機已有MySQL則直接使用): sh ./install.sh by_smart_installer"
	echo "4、簡化安裝只需要給出Redis和MySQL連接字符串即可(極簡方式): sh ./install.sh by_simple_installer"
	echo "說明:\r 以上4種方式已包含了Docker應(yīng)用的安裝!"
}
 
function completed()
{
	echo "******************安裝結(jié)果:*****************"
	# bridge 橋接模式
	#echo "network實例, share_network相關(guān)容器信息:"
	#docker network inspect share_network
	version_step=1
 
  # 記錄下一次版本號
	if [[ "$DOCKER_RTVSWEB_VERSION_TAG" == "VersionFirst" ]]; then
		DOCKER_RTVSWEB_FIRST_VERSION=$((DOCKER_RTVSWEB_FIRST_VERSION+version_step))
		sed -i "s/<VersionFirst>.*<\/VersionFirst>/<VersionFirst>$DOCKER_RTVSWEB_FIRST_VERSION<\/VersionFirst>/g" /usr/local/rtvs/VersionConfig.xml
		sed -i "s/<VersionSecond>.*<\/VersionSecond>/<VersionSecond>0<\/VersionSecond>/g" /usr/local/rtvs/VersionConfig.xml
		sed -i "s/<VersionThird>.*<\/VersionThird>/<VersionThird>0<\/VersionThird>/g" /usr/local/rtvs/VersionConfig.xml
	fi
	if [[ "$DOCKER_RTVSWEB_VERSION_TAG" == "VersionSecond" ]]; then
		DOCKER_RTVSWEB_SECOND_VERSION=$((DOCKER_RTVSWEB_SECOND_VERSION+version_step))
		sed -i "s/<VersionSecond>.*<\/VersionSecond>/<VersionSecond>$DOCKER_RTVSWEB_SECOND_VERSION<\/VersionSecond>/g" /usr/local/rtvs/VersionConfig.xml
		sed -i "s/<VersionThird>.*<\/VersionThird>/<VersionThird>0<\/VersionThird>/g" /usr/local/rtvs/VersionConfig.xml
	fi
	if [[ "$DOCKER_RTVSWEB_VERSION_TAG" == "VersionThird" ]]; then
		DOCKER_RTVSWEB_THIRD_VERSION=$((DOCKER_RTVSWEB_THIRD_VERSION+version_step))
		sed -i "s/<VersionThird>.*<\/VersionThird>/<VersionThird>$DOCKER_RTVSWEB_THIRD_VERSION<\/VersionThird>/g" /usr/local/rtvs/VersionConfig.xml
	fi
 
	VIDEO_CACHE_PATH=`grep -E -o -e '<VideoCachePath>.+</VideoCachePath>' /usr/local/rtvs/SettingConfig.xml | sed 's/<VideoCachePath>//g'|sed 's/<\/VideoCachePath>//g'`
	DB_REDIS_CONNECTION_STRING=`grep -E -o -e '<RedisExchangeHosts>.+</RedisExchangeHosts>' /usr/local/rtvs/SettingConfig.xml | sed 's/<RedisExchangeHosts>//g'|sed 's/<\/RedisExchangeHosts>//g'`
	DB_MYSQL_CONNECTION_STRING=`grep -E -o -e '<MysqlConnectionString>.+</MysqlConnectionString>' /usr/local/rtvs/SettingConfig.xml | sed 's/<MysqlConnectionString>//g'|sed 's/<\/MysqlConnectionString>//g'`
 
	echo "Redis連接字符串:$DB_REDIS_CONNECTION_STRING"
	echo "Mysql連接字符串:$DB_MYSQL_CONNECTION_STRING"
	echo "默認視頻緩存目錄:$VIDEO_CACHE_PATH"
	echo "正在運行的容器實例:"
	docker ps
  echo "容器對應(yīng)的Ip地址:"
  docker_container_ip mysql5.7
  if [[ "$DOCKER_CONTAINER_TEMP_HOST" != "" ]]; then
    echo "mysql5.7   ---------------------$DOCKER_CONTAINER_TEMP_HOST" 
  fi
  docker_container_ip $DOCKER_RTVSWEB_CONTAINER_NAME
  echo "$DOCKER_RTVSWEB_CONTAINER_NAME ---------------------$DOCKER_CONTAINER_TEMP_HOST"
  echo "驗證rtvs訪問:curl http://cvtsp.com:38067/"
	echo "******************安裝完成!*****************"
}
 
function version_management()
{
  DOCKER_RTVSWEB_FIRST_VERSION=`grep -E -o -e '<VersionFirst>.+</VersionFirst>' /usr/local/rtvs/VersionConfig.xml | sed 's/<VersionFirst>//g'|sed 's/<\/VersionFirst>//g'`
	DOCKER_RTVSWEB_SECOND_VERSION=`grep -E -o -e '<VersionSecond>.+</VersionSecond>' /usr/local/rtvs/VersionConfig.xml | sed 's/<VersionSecond>//g'|sed 's/<\/VersionSecond>//g'`
	DOCKER_RTVSWEB_THIRD_VERSION=`grep -E -o -e '<VersionThird>.+</VersionThird>' /usr/local/rtvs/VersionConfig.xml | sed 's/<VersionThird>//g'|sed 's/<\/VersionThird>//g'`
	DOCKER_RTVSWEB_VERSION_TAG=`grep -E -o -e '<UpgradeTag>.+</UpgradeTag>' /usr/local/rtvs/VersionConfig.xml | sed 's/<UpgradeTag>//g'|sed 's/<\/UpgradeTag>//g'`
 
	DOCKER_RTVSWEB_NEW_VERSION="$DOCKER_RTVSWEB_FIRST_VERSION.$DOCKER_RTVSWEB_SECOND_VERSION.$DOCKER_RTVSWEB_THIRD_VERSION"
  echo "當前rtvsweb版本:$DOCKER_RTVSWEB_NEW_VERSION"
  echo "當前rtvsweb版本升級格式:$DOCKER_RTVSWEB_VERSION_TAG"
}
 
function by_local_mysql_installer()
{
	# Docker 安裝
  docker_install
  # Mysql 安裝及其腳本創(chuàng)建
  mysql_install "by_local_mysql_installer"
  # 鏡像構(gòu)建
  if [[ $? -eq 0 ]]; then
		docker_build_image
		if [[ $? -eq 0 ]]; then
			echo "鏡像構(gòu)建成功!"
		else
			echo "鏡像構(gòu)建失敗!"
			exit 
		fi
  else
		exit
  fi
  # 修改鏡像使用的路徑和數(shù)據(jù)源
  editSpecificConfig
  # 完成后輸出
  completed
}
 
function by_docker_mysql_installer()
{
  # Docker 安裝
  docker_install
  # Mysql 安裝及其腳本創(chuàng)建
  mysql_install "by_docker_mysql_installer"
  # 鏡像構(gòu)建
  if [[ $? -eq 0 ]]; then
		docker_build_image
		if [[ $? -eq 0 ]]; then
			echo "鏡像構(gòu)建成功!"
		else
			echo "鏡像構(gòu)建失敗!"
			exit 
		fi
	else
		exit
  fi
  # 修改鏡像使用的路徑和數(shù)據(jù)源
  editSpecificConfig
  # 完成后輸出
  completed
}
 
function by_smart_installer()
{
  # Docker 安裝
  docker_install
  # Mysql 安裝及其腳本創(chuàng)建
  mysql_install "by_smart_installer"
  # 鏡像構(gòu)建
  if [[ $? -eq 0 ]]; then
		docker_build_image
		if [[ $? -eq 0 ]]; then
			echo "鏡像構(gòu)建成功!"
		else
			echo "鏡像構(gòu)建失敗!"
			exit 
		fi
  else
		exit
  fi
  # 修改鏡像使用的路徑和數(shù)據(jù)源
  editSpecificConfig
  # 完成后輸出
  completed
}
 
function by_simple_installer()
{
  # Docker 安裝
  docker_install  
  # 鏡像構(gòu)建
  docker_build_image 
  if [[ $? -eq 0 ]]; then
		echo "鏡像構(gòu)建成功!"
	else
		echo "鏡像構(gòu)建失敗!"
		exit 
	fi
  # 修改鏡像使用的路徑和數(shù)據(jù)源
  remoteRedisAndMysqlConfig
  # 完成后輸出
  completed
} 
 
if [[ $# -gt 0 ]]; then
	echo "安裝所需文件檢查...."
	init_files
	if [[ $? -eq 0 ]]; then
		echo "安裝Docker服務(wù)的文件存在,驗證通過!"
	else
		echo "安裝Docker服務(wù)的文件存在缺失,已退出安裝!"
		exit 
	fi
 
  echo "rtvsweb版本檢查...."
  version_management 
  echo "獲取本地局域網(wǎng)IP地址...."
	init_docker_master_ip
	echo "本地IP地址....MASTER_LAN_IP=$MASTER_LAN_IP"
	#statements 
	if [[ "$1" == "by_local_mysql_installer" ]]; then
		#statements
		by_local_mysql_installer 
	fi
	if [[ "$1" == "by_docker_mysql_installer" ]]; then
		#statements
		by_docker_mysql_installer 
	fi
	if [[ "$1" == "by_smart_installer" ]]; then
		#statements
		by_smart_installer 
	fi	
	if [[ "$1" == "by_simple_installer" ]]; then
		#statements
		by_simple_installer 
	fi	
	if [[ "$1" == "editXml" ]]; then
 
		if [[ $# -eq 4 ]]; then
			#statements
			editXml $2 $3 $4
		else
			echo "editXml參數(shù)個數(shù)不匹配!"
 
	  fi
	fi	
	if [[ "$1" == "help" ]]; then
		#statements
		help
	fi	
else
	help
fi

整體設(shè)計實現(xiàn)思路

1、Docker環(huán)境準備和安裝

2、MySQL環(huán)境準備和安裝

3、Docker的知識:構(gòu)建、運行

4、Docker鏡像的版本管理

5、容期間網(wǎng)絡(luò)訪問:--link

6、鏡像打包歷史

7、服務(wù)運行效果

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽:連云港 朝陽 運城 遵義 面試通知 隴南 雞西 荊門

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Shell腳本構(gòu)建Docker 半自動化編譯打包發(fā)布應(yīng)用操作》,本文關(guān)鍵詞  Shell,腳本,構(gòu)建,Docker,半自動化,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Shell腳本構(gòu)建Docker 半自動化編譯打包發(fā)布應(yīng)用操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于Shell腳本構(gòu)建Docker 半自動化編譯打包發(fā)布應(yīng)用操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产免费一区二区三区四区| 丝瓜app色版网站观看| 女同互忝互慰dv毛片观看| 国产精品高清乱码在线观看| 青青影院一区二区三区四区| 亚洲天堂小视频| 久久久一区二区三区| 美日韩丰满少妇在线观看| 嫩草影院国产精品| 国产精品视频一区二区三区,| 日本电影在线观看| 欧美视频二区欧美影视| 欧美日韩久久中文字幕| 国产精品后入内射日本在线观看| 成人网视频在线观看| 国产又大又黄又爽| 欧美专区中文字幕| 精品夜夜澡人妻无码av| 亚洲男人天天操| 亚洲精品国产一区二区| 欧美人与性动交α欧美精品济南到| 亚洲一级高清| 国产精品亚洲片在线播放| 国产精品九九九九九九| 亚洲一区二区三区日本久久九| 紧缚捆绑精品一区二区| 亚洲另类中文字| 午夜久久久精品| 久久国产三级精品| 国产精品综合视频| 糖心vlog精品一区二区| 免费成人黄色大片| 国产日韩在线亚洲字幕中文| 美女扒开尿口让男人操| 亚洲最色的网站| 国产调教精品| 亚洲欧美在线视频观看| 亚欧美中日韩视频| 日韩免费大片| 激情在线视频| 亚洲成人偷拍| 国产经典三级在线| 91精品国自产在线偷拍蜜桃| 成人一区二区三区| 国产人伦精品一区二区| 爱福利在线视频| 中文字幕剧情在线观看一区| 日本视频一区二区三区| 亚洲国产一区二区三区青草影视| 成人午夜无人区一区二区| 欧美伦理影院| 成 年 人 黄 色 大 片大 全| 老司机99精品99| 欧美日韩国产免费一区二区| 久久无码专区国产精品s| 久久久久亚洲蜜桃| 国产精品影视在线观看| 日韩美一区二区| 午夜精品久久久久久久久| 国产裸体歌舞团一区二区| sdde在线播放一区二区| 成年网站免费入口在线观看| 99热精品在线播放| 中文在线√天堂| 自拍偷拍欧美视频| 国产在线观看色| 亚洲色图38p| bt7086福利一区国产| 精品无码在线观看| 国产一区美女在线| 先锋影音欧美官网| 91丨porny丨九色| 黄色成人影院| 亚洲国产无线乱码在线观看| 高清一级毛片视频| www.av中文字幕| 无码人妻精品一区二区50| 99精品欧美一区二区三区综合在线| eeuss影院www天堂免费| 国产精品资源在线观看| ady日本映画久久精品一区二区| 亚洲激情免费视频| 97久久超碰福利国产精品…| 国产欧美一区二区精品性| 精品亚洲aⅴ在线观看| 97欧美成人| 久久精品国产久精国产| 伊人精品久久久久7777| 在线视频1区| 免费男女羞羞的视频网站在线观看| 欧美日韩免费一区二区三区视频| 毛片免费在线| 粉嫩av在线播放| 91久久精品在线| 久久婷婷蜜乳一本欲蜜臀| 99re国产视频| 久久久婷婷一区二区三区不卡| 亚洲精品国产美女| 国产九色在线播放九色| 三级久久三级久久久| 精品一区二区三区四区五区| 欧美另类videoxo高潮| 日本熟女一区二区| 中文字幕av在线| 亚洲天堂久久| 91tv亚洲精品香蕉国产一区| 米奇777在线欧美播放| 国产女同在线观看| 中文在线不卡| 三上悠亚在线一区二区| 亚洲经典视频在线观看| 国产精品自拍偷拍| 一级片一区二区三区| 久久免费少妇高潮99精品| 国产精品巨作av| 91亚洲精华国产精华精华液| 中文字幕 日本| 中文字幕中文字幕在线中文字幕三区| 欧美sm美女调教| 日韩中文字幕国产精品| 亚洲自拍偷拍图| 国产视频999| 亚洲国产精品成人综合色在线婷婷| 在线观看免费观看在线91| 日韩欧美不卡在线观看视频| 国产亚洲精品久久777777| 精品久久免费观看| 在线播放第一页| 西西人体一区二区| 成人国产免费电影| 中文字幕一区二区三区乱码| 欧美日韩国产另类不卡| 日本精品在线免费观看| 黄大色黄女片18第一次| 在线欧美一级视频| 国产农村妇女毛片精品久久麻豆| 精品一区二区三区免费| 中国丰满熟妇xxxx性| 日韩精品久久久久久久软件91| 国产精品一区二区三| 欧美白嫩的18sex少妇| 欧美伊人久久大香线蕉综合69| 九九精品视频在线看| 激情国产一区二区| 一二三四社区在线视频6| 国产精品美女午夜爽爽| 丰满熟女人妻一区二区三区| 国产精品7m凸凹视频分类| 国产日韩欧美一区二区三区| 男男视频亚洲欧美| 国产在线视频99| 国产日韩精品一区二区| 网爆门在线观看| 一区二区久久精品66国产精品| 日韩成人av影视| а√天堂官网中文在线| 亚洲另类一区二区| 精品国产大片大片大片| 国产奶头好大揉着好爽视频| 99精品在线免费| 嫩草影院一二三| 一区二区三区入口| 综合欧美视频一区二区三区| 国产精品丝袜久久久久久高清| www.狠狠操| 91蝌蚪91九色| 1000部国产精品成人观看| 天天鲁一鲁摸一摸爽一爽| 一区二区三区视频免费观看| 日韩中文字幕在线精品| 黄页网站视频在线观看| 国产精品黄色在线观看| 欧美日韩国产成人在线免费| 欧美日韩中文国产| 日本中文字幕在线不卡| 国产精品免费网站| 久操视频在线观看免费| 精品少妇在线视频| 这里有精品可以观看| 青青草手机在线视频| 亚洲人成伊人成综合网小说| 国产精品户外野外| wwwxxxx国产| 欧美自拍偷拍午夜视频| 9i精品福利一区二区三区| 黑人粗进入欧美aaaaa| 欧美jizzhd精品欧美巨大免费| 操操操干干干| 国产欧美日韩精品丝袜高跟鞋| 成人免费电影视频| 亚洲综合婷婷久久| 高h视频免费观看| 99久久99久久久精品齐齐| 国产黑丝一区二区| 强开小嫩苞一区二区三区网站| 亚洲第一伊人| 久久综合九色综合欧美狠狠| 国产不卡av在线播放| 免费看欧美一级片| 国产国语**毛片高清视频| 国产精品第一页第二页第三页| 日韩西西人体444www| 男女爱爱视频免费| 久久久久久这里只有精品| 午夜两性免费视频| 欧美一级黄色带| 国产在线精品一区二区三区不卡| 色综合久久网女同蕾丝边| 国产精品日韩在线| 亚洲怡红院在线| 国内外成人免费激情在线视频| 日本wwwxx| 久久久久久五月天久久久久久久久| 久久午夜免费视频| 国产成人免费视频| 午夜精品久久久久久久无码| 国产日韩在线| 精品美女调教视频| 成人影视在线播放| 国产视频一区二区在线观看| 国模一区二区| 色乱码一区二区三区熟女| 日韩在线成人| 欧洲亚洲女同hd| 日韩一区二区免费高清| 区一区二视频| 亚洲va久久久噜噜噜久久天堂| 欧美日韩小视频| 欧美激情15p| 另类综合日韩欧美亚洲| 久久久久亚洲精品成人网小说| 欧美精品videosex牲欧美| 99在线观看视频| 日韩欧美亚洲视频| 国产1卡2卡三卡四卡网站| 一区二区三区国产豹纹内裤在线| 欧美一区二区中文字幕| 欧美成aaa人片在线观看蜜臀| 精品国产老师黑色丝袜高跟鞋| 免费全黄无遮挡裸体毛片| 奇米精品一区二区三区四区| www.日韩av.com| 天天影视久久综合| 国产女人爽到高潮a毛片| jizz久久精品永久免费| 国产在线一区二区三区欧美| 黄色小视网站| 女人十八岁毛片| 精品国产精品久久一区免费式| 5566日本婷婷色中文字幕97| 午夜69成人做爰视频| 免费一二一二在线视频| 色94色欧美sute亚洲线路一ni| 五月天精品在线| 99热99这里只有精品| 欧美日韩国产天堂| 毛片aaaaaa| 五月香视频在线观看| 国产精品视频| 欧美一区二区三区的| 美女被人操网站| 欧美三级电影网站| 免费观看国产精品| 国产精品成人久久| 精品国产露脸精彩对白| 蜜桃av在线| 亚洲精品一区二区三区四区五区| 久热re这里精品视频在线6| 最新国产精品自拍| 男人艹女人网站| jizzjizzjizz国产| 亚洲免费视频中文字幕| 国产免费一区二区三区视频| 91成人在线看| 日韩综合在线观看| www.xxx国产| 99久久综合99久久综合网站| 久久久久久久激情视频| 伊人久久成人网| 国产99久久精品一区二区 夜夜躁日日躁| 午夜国产一区| va视频在线观看| 日韩国产中文字幕| 亚洲伦片免费看| 国产日本欧美一区二区三区在线| 黄色片网站在线播放| 欧美福利影院| 麻豆乱码国产一区二区三区| 蜜臀久久99精品久久久画质超高清| 日韩av高清不卡| 视频福利在线| 亚洲AV无码国产成人久久| 成年人视频在线免费看| 欧美xxxx性xxxxx高清| 成人av免费看| 麻豆一区二区在线| 国产在线精品一区二区不卡| www.黄色网址| 亚洲 美腿 欧美 偷拍| 蜜桃麻豆影像在线观看| 国内精品美女av在线播放| 亚洲色欲色欲www在线观看| 中文字幕高清20页| 狠狠色丁香婷婷综合| 桃乃木香奈和黑人aⅴ在线播放| 欧美伊人久久久久久久久影院| 一区二区三区免费在线观看视频| 人操人视频在线观看| 亚洲精品少妇久久久久久| 午夜视频一区二区三区| 久久精品a一级国产免视看成人| 精品无码人妻一区二区免费蜜桃| 国产午夜一区二区| 久久国产欧美日韩精品| 黑人巨茎大战欧美白妇| 都市激情亚洲色图| 超碰国产精品久久国产精品99| 国产三级一区二区| 青青草91视频| 欧美天堂社区| 蜜桃视频一区二区| 黄网站在线免费| 久久精品99久久久| 偷拍女澡堂一区二区三区| brazzers欧美最新版视频| 成人久久一区| 日韩精品1区2区| 欧洲黄色一级视频|