シェルスクリプトは、Docker の半自動コンパイル、パッケージ化、およびリリースアプリケーション操作を構築します。

シェルスクリプトは、Docker の半自動コンパイル、パッケージ化、およびリリースアプリケーション操作を構築します。

Docker 公開方法は、DevOps (送信、コンパイル、パッケージ化、リリースなどの一連のイベント制御を実装するために Git フックなどのコード管理ツールを構成する必要がある自動化された運用と保守) を実装するための多くの利便性を提供し、シェル スクリプトとうまく連携できます。

Docker イメージは、自動コンパイルまたはイメージのインポートによって取得できます。

この記事のタイトルは、「シェル スクリプトは、半自動コンパイル、パッケージ化、リリース用に Docker を構築します」です。まだコード管理と関連付けていないためです。

シェルスクリプトの異なる実装

イメージのインポート方法 (イメージ ファイル rtvsweb-publish.tar):

ビルドとリリースの方法(Dockerfile でビルド):

シェル Docker ビルド リリース スクリプト ツール コア install.sh

#!/bin/bash
##ファイル:rtvs.sh
##会社名:cvnavi.com
##著者:Pengjunlin
echo "現在実行されているファイル......$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"
########################################関数定義###########################################
関数 init_files()
{
	# rtvsディレクトリを作成する if [[ ! -d "/usr/local/rtvs" ]]; then
		echo "コンテナ マッピング パスを作成します.... /usr/local/rtvs"
		/usr/local/rtvs に移動します
	フィ
	# VersionConfig.xml をコピーします (最初は完全なコピーを作成します。変更がある場合は手動で変更する必要があります)
	[[ -f "./VersionConfig.xml" ]]の場合
		[[ ! -f "/usr/local/rtvs/VersionConfig.xml" ]]; の場合
			echo "XML 構成ファイルをコピーします: ./VersionConfig.xml /usr/local/rtvs/VersionConfig.xml"
			cp VersionConfig.xml /usr/local/rtvs/VersionConfig.xml
		フィ
	それ以外
		echo "./VersionConfig.xml ファイルがありません... インストールを終了します!"
		出口
	フィ
	# SettingConfig.xml をコピーします (最初は完全なコピーを作成します。変更がある場合は手動で変更する必要があります)
	[[ -f "./SettingConfig.xml" ]]の場合
		[[ ! -f "/usr/local/rtvs/SettingConfig.xml" ]]; の場合
			echo "XML 構成ファイルをコピーします: ./SettingConfig.xml /usr/local/rtvs/SettingConfig.xml"
			cp SettingConfig.xml /usr/local/rtvs/SettingConfig.xml
		フィ
	それ以外
		echo "./SettingConfig.xml ファイルがありません... インストールを終了しました!"
		出口
	フィ
	# log4.config をコピーします (最初は完全なコピーを作成します。変更がある場合は手動で変更する必要があります)
	[[ -f "./log4.config" ]]の場合
		[[ ! -f "/usr/local/rtvs/log4.config" ]]; の場合
			echo "ログ設定ファイルをコピーします: ./log4.config /usr/local/rtvs/log4.config"
		  log4.config を /usr/local/rtvs/log4.config にコピーします。
		フィ
	それ以外
		echo "./log4.config ファイルがありません... インストールを終了します!"
		出口
	フィ
}
関数 mysql_create_table()
{
	[[ -f "./mysql_create_table.sh" ]]の場合
		echo "データベース スクリプトの割り当て権限..."
		# 実行ファイルに権限を追加 chmod a+x mysql_create_table.sh
	それ以外
		echo "./mysql_create_table.sh ファイルがありません... インストールを終了しました!"
	  出口
	フィ
	# mysqlデータベーステーブル作成を実行します。./mysql_create_table.sh
	[[ $? -eq 0 ]]の場合
		echo "./mysql_docker_install.sh の実行が完了しました!"
	それ以外
		出口
	フィ
}
 
関数 docker_install()
{
	echo "Docker をチェック..."
	ドッカー -v
  [ $? -eq 0 ]の場合;
    echo "Docker がインストールされていることを確認しました!"
  それ以外
  	echo "docker 環境をインストールします..."
    curl -sSL https://get.daocloud.io/docker | sh
    echo "docker 環境をインストールします...インストールが完了しました!"
  フィ
  # パブリックネットワークを作成 == ブリッジモード #docker network create share_network
}
 
関数mysql_install(){
	インストールタイプ=$1
 
	[[ "$install_type" == "by_local_mysql_installer" ]] の場合、
		#ステートメント
		echo "Wget のローカルダウンロードとインストールはまだサポートされていないため、終了しました!"
		出口1
	フィ
 
	[[ "$install_type" == "by_docker_mysql_installer" ]] の場合、
		#ステートメント
		docker_mysql_インストール
	フィ
 
	[[ "$install_type" == "by_smart_installer" ]] の場合
		#ステートメント
		[[ `netstat -lanp|grep tcp|grep 3306|wc -l` == 1 ]]の場合
			echo "MySQL がローカルにインストールされました!"
			# mysql バージョンを出力します echo "mysql version occurred:"
			mysql --バージョン
			# スクリプトを実行してMysqlデータベースmysql_create_tableを作成します
			[[ $? -eq 0 ]]の場合
				echo "ローカル MySQL スクリプトの初期化が完了しました!"
			それ以外
				echo "ローカル MySQL スクリプトの初期化に失敗しました!"
				出口1
			フィ
		  DB_MYSQL_HOST="ローカルホスト"
		それ以外
			docker_mysql_インストール
		フィ
	フィ
}
 
関数docker_mysql_install(){
	echo "Docker Mysql 環境をインストールします..."
	[[ -f "./docker_mysql_install.sh" ]]; の場合
		[[ -f "./docker_mysql_create_table.sh" ]]; の場合
			echo "コンテナ実行ファイルをコピーします: ./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
		それ以外
			echo "./docker_mysql_create_table.sh ファイルがありません... インストールを終了しました!"
		  出口1
		フィ
		# 実行ファイルに権限を追加 chmod a+x docker_mysql_install.sh
		# Dockerを使用してMySQLをインストールする
		./docker_mysql_install.sh
		[[ $? -eq 0 ]]の場合
			echo "./docker_mysql_install.sh の実行が完了しました!"
			# 10 秒間スリープします echo "Docker が完了するまで 10 秒間スリープします..."
			10秒寝る
			# mysql 情報の印刷をテストする print_docker_mysql_info
		それ以外
			echo "./docker_mysql_install.sh の実行中にエラーが発生したため、インストールが終了しました。"
		  出口1
		フィ
	それ以外
		  echo "./docker_mysql_install.sh ファイルがありません... インストールを終了しました!"
		  出口1
	フィ
}
 
関数docker_container_ip() {
  DOCKER_CONTAINER_TEMP_HOST=` docker examine --format '{{ .NetworkSettings.IPAddress }}' $1`
}
 
関数 init_docker_master_ip(){
	アウト=0
	i in `ip a |grep inet[^6]|grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}'`; を実行する
		OLD_IFS="$IFS" 
		IFS="." 
		arr=($i) 
		IFS="$OLD_IFS" 
		${arr[@]}内のsに対して;do 
			[[ $s -eq "192" ]]の場合
				 エコー「$i」 
				 マスターLANIP=$i
				 アウト=1
				 壊す
			フィ
		終わり
		[[ $out -eq 1 ]]の場合
			壊す
		フィ
	終わり
}
 
関数 print_docker_mysql_info()
{
	echo "スクリプトはMysql情報の検証を実行します:..."
	[[ -f "./docker_mysql_validator.sh" ]]; の場合
		echo "コンテナ実行ファイルをコピーします: ./docker_mysql_validator.sh /usr/local/docker_mysql_validator.sh"
		cp docker_mysql_validator.sh /usr/local/docker_mysql_validator.sh
	それ以外
		echo "./docker_mysql_validator.sh ファイルがありません... インストールを終了しました!"
		出口
 	フィ
 
	# コピーファイルパスを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"
	[[ $? -eq 0 ]]の場合
		echo "./docker_mysql_validator.sh の実行が完了しました!"
 
		echo "MySQL コンテナ ホスト:"
		docker_コンテナ_ip mysql5.7 
		echo "現在の mysql5.7 インスタンス IP=$DOCKER_CONTAINER_TEMP_HOST"
		#echo "MySQL コンテナ ネットワーク関連情報:"
		#docker ネットワーク検査 share_network
    #echo "MySQL コンテナ リンク関連情報:"
		#cat /etc/hosts
	それ以外
		echo "./docker_mysql_validator.sh の実行中にエラーが発生したため、インストールが終了しました。"
		出口
	フィ
	#link アクセス方法 DB_MYSQL_HOST="mysql5.7"
}
 
関数destroy_docker_service()
{
	# コンテナを停止する for i in [ `docker ps ` ]; do
		[[ "$i" == "rtvsweb-publish" ]]の場合
			echo "$DOCKER_RTVSWEB_CONTAINER_NAME コンテナを停止しようとしています..."
		  docker stop $DOCKER_RTVSWEB_CONTAINER_NAME
		フィ
	終わり
  # コンテナを削除する for i in [ `docker ps -a` ]; do
		[[ "$i" == "rtvsweb-publish" ]]の場合
			echo "$DOCKER_RTVSWEB_CONTAINER_NAME コンテナを削除しようとしています..."
		docker rm $DOCKER_RTVSWEB_コンテナ名
		フィ
	終わり
}
 
関数 docker_build_image()
{
	#コンテナをクリーンアップする(過去のビルドのイメージは保持する)
	破壊されたDockerサービス
 
	[[ $? -eq 0 ]]の場合
		echo "アプリケーション サービス コンテナーとイメージが処理され、構成ファイルがコピーされました!"
	それ以外
		出口1
	フィ
  
	echo "Docker イメージのビルド......cmd:(docker build -t rtvsweb:$DOCKER_RTVSWEB_NEW_VERSION .)"
	ビルド rtvsweb:$DOCKER_RTVSWEB_NEW_VERSION を実行します。
 
	# イメージがあるかどうかを確認し、存在する場合は対応するコンテナインスタンスを作成します for i in [ `docker images` ]; do
		#ステートメント
		[[ "$i" == "$DOCKER_RTVSWEB_NEW_VERSION" ]] の場合、
			DOCKER_IMAGE_IS_MATCH_TAR_FILE="true"
			echo "最新のビルドイメージが見つかりました!"
			実行_docker_service_image
			壊す
		フィ
	終わり
	[[ $DOCKER_IMAGE_IS_MATCH_TAR_FILE == "false" ]]の場合
		echo "ビルドイメージが最新バージョンと一致しないため、インストールを終了します!"
		出口1
	フィ
 
	echo "ビルド後の Docker イメージのリスト:"
	Docker イメージ
 
	echo "現在実行中の Docker コンテナ インスタンスのリスト:"
	ドッカーps
}
 
関数 run_docker_service_image()
{
	echo "docker サービス コンテナを起動しています..."
	: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
	[[ $DB_MYSQL_HOST == "mysql5.7" ]]の場合
		# ===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
	それ以外
		# ===通常モード 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
	フィ
}
 
#######################ツールとプロセスのカスタマイズ#################################
 
関数 editXml()
{
  val=`エコー ${@:3}`
  echo "XML ファイルを変更しています: $1...."
  echo "XML ファイルを変更しています: [0]=$1、[1]=$2、[2]=$val"
  echo "XML ファイル $2 タグ値​​ = $val"
  sed -i "s/<$2>.*<\/$2>/<$2>${val} <\/$2></g" $1
}
 
関数 init_mysql_conn()
{
	[[ "$DB_MYSQL_HOST" == "localhost" ]]の場合
		mysql="データベース=filecache;データソース=$MASTER_LAN_IP;ポート=3366;ユーザーID=rtvsweb;パスワード=rtvs2018;文字セット=utf8;プール=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'`
	それ以外
		mysql="データベース=filecache;データソース=mysql5.7;ポート=3306;ユーザーID=rtvsweb;パスワード=rtvs2018;文字セット=utf8;プール=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'`
	フィ
} 
 
関数 editSpecificConfig()
{
  初期化
	echo "/usr/local/rtvs/SettingConfig.xml 情報を取得します..."
	/usr/local/rtvs/SettingConfig.xml を編集します。
 
  # 設定可能かどうか判断する if [[ "$SYSTEM_ALLOW_TO_SET" == "true" ]]; then
		read -p ">>>Redis 構成接続文字列を変更しますか? y/n: " ans
		「$ans」をエコーし​​ます
		[[ "$ans" == "y" ]]の場合
			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"
		フィ
 
		read -p ">>>Mysql 構成接続文字列を変更しますか? y/n: " ans
		「$ans」をエコーし​​ます
		[[ "$ans" == "y" ]]の場合
			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"
		フィ
	フィ
}
 
関数 remoteRedisAndMysqlConfig()
{
 
	echo "/usr/local/rtvs/SettingConfig.xml 情報を取得します..."
	/usr/local/rtvs/SettingConfig.xml を編集します。
	# Redis接続文字列を設定します。read -p "Redis構成接続文字列を変更しますか? y/n: " ans
	「$ans」をエコーし​​ます
	[[ "$ans" == "y" ]]の場合
		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"
	フィ
	
 
	read -p "Mysql 構成の接続文字列を変更しますか? y/n: " ans
	「$ans」をエコーし​​ます
	[[ "$ans" == "y" ]]の場合
		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"
	フィ
	
}
 
関数ヘルプ()
{
	エコー "************************************************"
	echo "************ 呼び出しメソッドの説明************"
	エコー "****************************************************"
	echo "コア構成ファイルを表示します: cat ./SettingConfig.xml"
	echo "ヘルプメソッドの説明: sh ./install.sh help"
	echo "Redis および MySQL の接続文字列を変更します: sh ./install.sh editXml [XMLFilePath] [tag] ['value'] "
  エコー "****************************************************"
	echo "************ クイックカスタムインストール*************"
	エコー "****************************************************"
	echo "1. ローカル MySQL インストールを実行します (wget ダウンロード ファイルのインストール...時間がかかります): sh ./install.sh by_local_mysql_installer"
	echo "2. 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 アプリケーションのインストールがすでに含まれています。"
}
 
関数が完了しました()
{
	echo "*********************インストール結果:********************"
	# bridge ブリッジモード #echo "ネットワークインスタンス、share_network 関連のコンテナ情報:"
	#docker ネットワーク検査 share_network
	バージョン_ステップ=1
 
  # 次のバージョン番号を記録する if [[ "$DOCKER_RTVSWEB_VERSION_TAG" == "VersionFirst" ]]; then
		DOCKER_RTVSWEB_FIRST_VERSION=$((DOCKER_RTVSWEB_FIRST_VERSION+バージョンステップ))
		sed -i "s/<バージョンファースト>.*<\/バージョンファースト>/<バージョンファースト>$DOCKER_RTVSWEB_FIRST_VERSION<\/バージョンファースト>/g" /usr/local/rtvs/VersionConfig.xml
		sed -i "s/<バージョン秒>.*<\/バージョン秒>/<バージョン秒>0<\/バージョン秒>/g" /usr/local/rtvs/VersionConfig.xml
		sed -i "s/<VersionThird>.*<\/VersionThird>/<VersionThird>0<\/VersionThird>/g" /usr/local/rtvs/VersionConfig.xml
	フィ
	[[ "$DOCKER_RTVSWEB_VERSION_TAG" == "VersionSecond" ]] の場合、
		DOCKER_RTVSWEB_SECOND_VERSION=$((DOCKER_RTVSWEB_SECOND_VERSION+バージョンステップ))
		sed -i "s/<バージョン 2 番目>.*<\/バージョン 2 番目>/<バージョン 2 番目>$DOCKER_RTVSWEB_SECOND_VERSION<\/バージョン 2 番目>/g" /usr/local/rtvs/VersionConfig.xml
		sed -i "s/<VersionThird>.*<\/VersionThird>/<VersionThird>0<\/VersionThird>/g" /usr/local/rtvs/VersionConfig.xml
	フィ
	[[ "$DOCKER_RTVSWEB_VERSION_TAG" == "VersionThird" ]]; の場合
		DOCKER_RTVSWEB_THIRD_VERSION=$((DOCKER_RTVSWEB_THIRD_VERSION+バージョンステップ))
		sed -i "s/<VersionThird>.*<\/VersionThird>/<VersionThird>$DOCKER_RTVSWEB_THIRD_VERSION<\/VersionThird>/g" /usr/local/rtvs/VersionConfig.xml
	フィ
 
	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 "コンテナインスタンスを実行しています:"
	ドッカーps
  echo "コンテナに対応する IP アドレス:"
  docker_コンテナ_ip mysql5.7
  [[ "$DOCKER_CONTAINER_TEMP_HOST" != "" ]]; の場合
    echo "mysql5.7 ---------------------$DOCKER_CONTAINER_TEMP_HOST" 
  フィ
  docker_container_ip $DOCKER_RTVSWEB_CONTAINER_NAME
  echo "$DOCKER_RTVSWEB_CONTAINER_NAME ---------------------$DOCKER_CONTAINER_TEMP_HOST"
  echo "rtvs アクセスを確認します: curl http://cvtsp.com:38067/"
	echo "********************インストールが完了しました!*****************"
}
 
関数 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"
}
 
関数 by_local_mysql_installer()
{
	# Docker インストール docker_install
  # Mysql のインストールとスクリプトの作成 mysql_install "by_local_mysql_installer"
  # 画像構築if [[ $? -eq 0 ]]; then
		docker_build_image
		[[ $? -eq 0 ]]の場合
			echo "イメージのビルドに成功しました!"
		それ以外
			echo "イメージのビルドに失敗しました!"
			出口 
		フィ
  それ以外
		出口
  フィ
  # imageeditSpecificConfig で使用されるパスとデータソースを変更します
  # 完了後に出力が完了しました
}
 
関数 by_docker_mysql_installer()
{
  # Docker インストール docker_install
  # Mysql のインストールとスクリプトの作成mysql_install "by_docker_mysql_installer"
  # 画像構築if [[ $? -eq 0 ]]; then
		docker_build_image
		[[ $? -eq 0 ]]の場合
			echo "イメージのビルドに成功しました!"
		それ以外
			echo "イメージのビルドに失敗しました!"
			出口 
		フィ
	それ以外
		出口
  フィ
  # imageeditSpecificConfig で使用されるパスとデータソースを変更します
  # 完了後に出力が完了しました
}
 
関数 by_smart_installer()
{
  # Docker インストール docker_install
  # Mysql のインストールとスクリプトの作成 mysql_install "by_smart_installer"
  # 画像構築if [[ $? -eq 0 ]]; then
		docker_build_image
		[[ $? -eq 0 ]]の場合
			echo "イメージのビルドに成功しました!"
		それ以外
			echo "イメージの構築に失敗しました!"
			出口 
		フィ
  それ以外
		出口
  フィ
  # imageeditSpecificConfig で使用されるパスとデータソースを変更します
  # 完了後に出力が完了しました
}
 
関数 by_simple_installer()
{
  # Docker インストール docker_install  
  # イメージのビルド docker_build_image 
  [[ $? -eq 0 ]]の場合
		echo "イメージのビルドに成功しました!"
	それ以外
		echo "イメージの構築に失敗しました!"
		出口 
	フィ
  # イメージで使用されるパスとデータソース remoteRedisAndMysqlConfig を変更します
  # 完了後に出力が完了しました
} 
 
[[ $# -gt 0 ]]の場合
	echo "インストールに必要なファイルを確認してください..."
	初期化ファイル
	[[ $? -eq 0 ]]の場合
		echo "Docker サービスをインストールするためのファイルが存在し、検証に合格しました!"
	それ以外
		echo "Docker サービスをインストールするためのファイルが見つからないため、インストールが終了しました!"
		出口 
	フィ
 
  echo "rtvsweb バージョン チェック...."
  バージョン管理 
  echo "ローカル LAN IP アドレスを取得します..."
	マスターIPを初期化する
	echo "ローカル IP アドレス....MASTER_LAN_IP=$MASTER_LAN_IP"
	#ステートメント 
	[[ "$1" == "by_local_mysql_installer" ]]の場合
		#ステートメント
		ローカルmysqlインストーラ 
	フィ
	[[ "$1" == "by_docker_mysql_installer" ]]の場合、
		#ステートメント
		docker_mysql_installer より 
	フィ
	[[ "$1" == "by_smart_installer" ]]の場合
		#ステートメント
		_smart_installer より 
	フィ	
	[[ "$1" == "by_simple_installer" ]]の場合
		#ステートメント
		作成者:_simple_installer 
	フィ	
	[[ "$1" == "editXml" ]]の場合
 
		[[ $# -eq 4 ]]の場合
			#ステートメント
			編集XML $2 $3 $4
		それ以外
			echo "editXml パラメータ番号が一致しません!"
 
	  フィ
	フィ	
	[[ "$1" == "help" ]]の場合
		#ステートメント
		ヘルプ
	フィ	
それ以外
	ヘルプ
フィ

全体的な設計実装のアイデア

1. Docker環境の準備とインストール

2. MySQL環境の準備とインストール

3. Dockerの知識: ビルドと実行

4. Dockerイメージのバージョン管理

5. 許容中のネットワークアクセス: --link

6. 画像パッケージの履歴

7. サービス運用効果

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Dockerはコンテナとホスト間でのシェルコマンドのシームレスな呼び出しを可能にします
  • Dockerコンテナシェルスクリプトの実行ステータスを監視する方法
  • DockerでLinuxシェルコマンドを実行する方法
  • シェルスクリプトによるDockerコンテナの起動順序の制御の詳細な説明
  • ホスト上のDockerコンテナ内でシェルまたはプログラムを実行する
  • シェルスクリプトを使用して Docker サービスを一括で開始および停止する

<<:  CSS で垂直方向の中央揃えを実装するいくつかの方法の概要

>>:  MySQL UPDATE ステートメントの非標準実装コード

推薦する

JavaScriptのアンチシェイクとスロットリングとは

目次1. 関数デバウンス1. 画像安定化とは何ですか? 2. 関数のスロットリング2.1 タイマーの...

Linux crontab コマンドの使用

1. コマンドの紹介contab (cron テーブル) コマンドは、Windows のスケジュール...

Django が uwsgi+nginx プロキシで静的リソースにアクセスできない問題の解決方法

uwsgi+nginx プロキシ Django をデプロイする場合、uwsgi を使用したアクセスは...

React構成サブルーティングの実装

1. コンポーネント First.js にはサブコンポーネントがあります。 './Admin...

Dockerはnextcloudを使用してプライベートBaiduクラウドディスクを構築します

突然、ドキュメントの保存と共同作業のためのプライベート サービスを構築する必要がありました。多くの場...

MySql 8.0.16-win64 インストール チュートリアル

1. ダウンロードしたファイルを以下のように解凍します。 。 2. 環境変数に解凍ディレクトリを追加...

Win10でのJDKのインストールと環境変数の設定に関する詳細なチュートリアル

目次序文1. 準備2. インストール3. 環境変数を設定する1. 「新規」をクリックすると、ポップア...

Mysql 8.0 のインストールとパスワードのリセットの問題

Mysql 8.0 のインストールの問題とパスワードのリセット1: MySqlをダウンロードする公式...

Flex モバイルレイアウトにおけるシングルラインレイアウトとダブルラインレイアウトの違いと使い方

レイアウトにul>liを使用した単一行レイアウトを以下に示します。 <ul class=...

MYSQL データベースの基礎 - 結合操作の原理

結合では、ネスト ループ結合アルゴリズムが使用されます。ネスト ループ結合には 3 つの種類がありま...

Alibaba Cloud Ubuntu 16.04でpptpdサービスを構築する方法

1. PPTP VPNを構築するには、ポート1723とGREプロトコルを開く必要があります。 1. ...

Nginx ソースコードのコンパイルとインストールのプロセス記録

rpm パッケージのインストールは比較的簡単なので、ここでは説明しません。ほとんどのオープンソース ...

MySQL の単一テーブル クエリ操作例の詳細な説明 [構文、制約、グループ化、集計、フィルタリング、並べ替えなど]

この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...

22 Vue 最適化のヒント (プロジェクトの実践)

目次コードの最適化v-for でキーを使用するv-if/v-else-if/v-else でキーを使...

垂直方向の中央揃えをエレガントに実現する方法を教えます(推奨)

序文CSS で水平方向と垂直方向に中央揃えする方法はたくさんあります。この記事で紹介する方法は非常に...