Shell-Skript erstellt Docker halbautomatische Kompilierungs-, Verpackungs- und Freigabeanwendungsvorgänge

Shell-Skript erstellt Docker halbautomatische Kompilierungs-, Verpackungs- und Freigabeanwendungsvorgänge

Die Docker-Veröffentlichungsmethode bietet viele Annehmlichkeiten für die Implementierung von DevOps (automatisierter Betrieb und Wartung, die die Konfiguration von Codeverwaltungstools wie Git-Hooks erfordert, um eine Reihe von Ereignissteuerungen wie Übermittlung, Kompilierung, Verpackung und Freigabe zu implementieren) und kann gut mit Shell-Skripten koordiniert werden.

Docker-Images können durch automatische Kompilierung oder durch Importieren von Images bezogen werden.

Der Titel dieses Artikels lautet: Shell-Skript erstellt Docker für halbautomatische Kompilierung, Verpackung und Freigabe, da ich es bisher nicht mit der Codeverwaltung in Verbindung gebracht habe.

Shell-Skript verschiedene Implementierungen

Bildimportmethode (Bilddatei rtvsweb-publish.tar):

Build- und Release-Methode (erstellt durch Dockerfile):

Shell Docker Build-Release-Skript-Tool Core install.sh

#!/bin/bash
##Datei:rtvs.sh
##Unternehmen:cvnavi.com
##Autor:Pengjunlin
echo "Aktuell ausgeführte Datei......$0"
############################################Variablendefinition##################################
DOCKER_IMAGE_IS_MATCH_TAR_FILE="falsch"
DOCKER_RTVSWEB_CONTAINER_NAME="rtvsweb-veröffentlichen"
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="falsch"
############################################Funktionsdefinition#########################################
Funktion init_files()
{
	# RTVs-Verzeichnis erstellen, wenn [[ ! -d "/usr/local/rtvs" ]]; dann
		echo "Container-Mapping-Pfad erstellen... /usr/local/rtvs"
		mkdir /usr/local/rtvs
	fi
	# VersionConfig.xml kopieren (erstellen Sie beim ersten Mal eine vollständige Kopie. Bei Änderungen müssen Sie diese manuell anpassen)
	wenn [[ -f "./VersionConfig.xml" ]]; dann
		wenn [[ ! -f "/usr/local/rtvs/VersionConfig.xml" ]]; dann
			echo "Eine XML-Konfigurationsdatei kopieren: ./VersionConfig.xml /usr/local/rtvs/VersionConfig.xml"
			cp VersionConfig.xml /usr/local/rtvs/VersionConfig.xml
		fi
	anders
		echo "Datei ./VersionConfig.xml fehlt... Installation beenden!"
		Ausfahrt
	fi
	# SettingConfig.xml kopieren (erstellen Sie beim ersten Mal eine vollständige Kopie, bei Änderungen müssen Sie diese manuell anpassen)
	wenn [[ -f "./SettingConfig.xml" ]]; dann
		wenn [[ ! -f "/usr/local/rtvs/SettingConfig.xml" ]]; dann
			echo "Eine XML-Konfigurationsdatei kopieren: ./SettingConfig.xml /usr/local/rtvs/SettingConfig.xml"
			cp SettingConfig.xml /usr/local/rtvs/SettingConfig.xml
		fi
	anders
		echo "Datei ./SettingConfig.xml fehlt... Installation abgebrochen!"
		Ausfahrt
	fi
	# log4.config kopieren (erstellen Sie beim ersten Mal eine vollständige Kopie. Bei Änderungen müssen Sie diese manuell anpassen)
	wenn [[ -f "./log4.config" ]]; dann
		wenn [[ ! -f "/usr/local/rtvs/log4.config" ]]; dann
			echo "Eine Protokollkonfigurationsdatei kopieren: ./log4.config /usr/local/rtvs/log4.config"
		  cp log4.config /usr/local/rtvs/log4.config
		fi
	anders
		echo "Datei ./log4.config fehlt... Installation beenden!"
		Ausfahrt
	fi
}
Funktion mysql_create_table()
{
	wenn [[ -f "./mysql_create_table.sh" ]]; dann
		echo "Berechtigungen für die Datenbankskriptzuweisung …"
		# Fügen Sie der ausführbaren Datei Berechtigungen hinzu chmod a+x mysql_create_table.sh
	anders
		echo "Datei ./mysql_create_table.sh fehlt... Installation abgebrochen!"
	  Ausfahrt
	fi
	# Führen Sie die Erstellung der MySQL-Datenbanktabelle aus ./mysql_create_table.sh
	wenn [[ $? -eq 0 ]]; dann
		echo "./mysql_docker_install.sh-Ausführung abgeschlossen!"
	anders
		Ausfahrt
	fi
}
 
Funktion docker_install()
{
	echo "Docker prüfen …"
	Docker -v
  wenn [ $? -eq 0 ]; dann
    echo "Überprüft, ob Docker installiert ist!"
  anders
  	echo "Docker-Umgebung installieren …"
    curl -sSL https://get.daocloud.io/docker | sh
    echo "Docker-Umgebung installieren … Installation abgeschlossen!"
  fi
  # Ein öffentliches Netzwerk erstellen == Bridge-Modus #Docker-Netzwerk erstellen Share_Network
}
 
Funktion mysql_install(){
	Installationstyp=$1
 
	wenn [[ "$install_type" == "by_local_mysql_installer" ]]; dann
		#Aussagen
		echo "Der lokale Download und die Installation von Wget werden noch nicht unterstützt, beendet!"
		Ausfahrt 1
	fi
 
	wenn [[ "$install_type" == "by_docker_mysql_installer" ]]; dann
		#Aussagen
		docker_mysql_install
	fi
 
	wenn [[ "$install_type" == "by_smart_installer" ]]; dann
		#Aussagen
		wenn [[ `netstat -lanp|grep tcp|grep 3306|wc -l` == 1 ]]; dann
			echo "MySQL wurde lokal installiert!"
			# Drucken Sie die MySQL-Version aus. Echo „MySQL-Version erkannt:“
			mysql --version
			# Führen Sie das Skript aus, um die Mysql-Datenbank mysql_create_table zu erstellen
			wenn [[ $? -eq 0 ]]; dann
				echo "Initialisierung des lokalen MySQL-Skripts abgeschlossen!"
			anders
				echo "Das lokale MySQL-Skript konnte nicht initialisiert werden!"
				Ausfahrt 1
			fi
		  DB_MYSQL_HOST="lokaler Host"
		anders
			docker_mysql_install
		fi
	fi
}
 
Funktion docker_mysql_install(){
	echo "Docker Mysql-Umgebung installieren …"
	wenn [[ -f "./docker_mysql_install.sh" ]]; dann
		wenn [[ -f "./docker_mysql_create_table.sh" ]]; dann
			echo "Eine Container-Ausführungsdatei kopieren: ./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
		anders
			echo "Datei ./docker_mysql_create_table.sh fehlt … Installation abgebrochen!"
		  Ausfahrt 1
		fi
		# Fügen Sie der ausführbaren Datei chmod a+x docker_mysql_install.sh Berechtigungen hinzu
		# MySQL mit Docker installieren
		./docker_mysql_install.sh
		wenn [[ $? -eq 0 ]]; dann
			echo "./docker_mysql_install.sh Ausführung abgeschlossen!"
			# 10 Sekunden schlafen echo „10 Sekunden schlafen, warten, bis Docker fertig ist …“
			10 Sekunden schlafen
			# Testen Sie das Drucken der MySQL-Informationen print_docker_mysql_info
		anders
			echo "Während der Ausführung von ./docker_mysql_install.sh ist ein Fehler aufgetreten und die Installation wurde beendet!"
		  Ausfahrt 1
		fi
	anders
		  echo "Datei ./docker_mysql_install.sh fehlt … Installation abgebrochen!"
		  Ausfahrt 1
	fi
}
 
Funktion docker_container_ip() {
  DOCKER_CONTAINER_TEMP_HOST=` docker inspect --format '{{ .NetworkSettings.IPAddress }}' $1`
}
 
Funktion init_docker_master_ip(){
	aus=0
	für i in `ip a |grep inet[^6]|grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}'`; mache
		OLD_IFS="$IFS" 
		IFS="." 
		arr=($i) 
		IFS="$OLD_IFS" 
		für s in ${arr[@]} ;mach 
			wenn [[ $s -eq "192" ]]; dann
				 echo "$i" 
				 MASTER_LAN_IP=$i
				 aus=1
				 brechen
			fi
		Erledigt
		wenn [[ $out -eq 1 ]]; dann
			brechen
		fi
	Erledigt
}
 
Funktion print_docker_mysql_info()
{
	echo "Skript führt Mysql-Informationsüberprüfung aus: …"
	wenn [[ -f "./docker_mysql_validator.sh" ]]; dann
		echo "Eine Container-Ausführungsdatei kopieren: ./docker_mysql_validator.sh /usr/local/docker_mysql_validator.sh"
		cp docker_mysql_validator.sh /usr/local/docker_mysql_validator.sh
	anders
		echo "Datei ./docker_mysql_validator.sh fehlt … Installation abgebrochen!"
		Ausfahrt
 	fi
 
	# Ordnen Sie den Kopierdateipfad dem Docker-Container docker cp /usr/local/docker_mysql_validator.sh mysql5.7:/usr/local/docker_mysql_validator.sh zu.
 
	docker exec -it mysql5.7 /bin/bash -c "sh /usr/local/docker_mysql_validator.sh"
	wenn [[ $? -eq 0 ]]; dann
		echo "./docker_mysql_validator.sh Ausführung abgeschlossen!"
 
		echo "MySQL-Container-Host:"
		docker_container_ip mysql5.7 
		echo "Aktuelle mysql5.7-Instanz-IP=$DOCKER_CONTAINER_TEMP_HOST"
		#echo "Informationen zum MySQL-Containernetzwerk:"
		#Docker-Netzwerk prüfen Share_Network
    #echo "Informationen zum MySQL-Containerlink:"
		#cat /etc/hosts
	anders
		echo "Während der Ausführung von ./docker_mysql_validator.sh ist ein Fehler aufgetreten und die Installation wurde beendet!"
		Ausfahrt
	fi
	#link Zugriffsmethode DB_MYSQL_HOST="mysql5.7"
}
 
Funktion destroy_docker_service()
{
	# Stoppen Sie den Container für i in [ `docker ps ` ];
		wenn [[ "$i" == "rtvsweb-publish" ]]; dann
			echo "Versuch, den Container $DOCKER_RTVSWEB_CONTAINER_NAME zu stoppen …"
		  Docker-Stopp $DOCKER_RTVSWEB_CONTAINER_NAME
		fi
	Erledigt
  # Container für i in [ `docker ps -a` ] löschen; machen
		wenn [[ "$i" == "rtvsweb-publish" ]]; dann
			echo "Versuch, den Container $DOCKER_RTVSWEB_CONTAINER_NAME zu löschen …"
		docker rm $DOCKER_RTVSWEB_CONTAINER_NAME
		fi
	Erledigt
}
 
Funktion docker_build_image()
{
	#Container aufräumen (Image des historischen Builds beibehalten)
	Zerstörung_Docker_Service
 
	wenn [[ $? -eq 0 ]]; dann
		echo "Anwendungsdienstcontainer und Image wurden verarbeitet, Konfigurationsdateien wurden kopiert!"
	anders
		Ausfahrt 1
	fi
  
	echo "Docker-Image erstellen...cmd:(docker build -t rtvsweb:$DOCKER_RTVSWEB_NEW_VERSION .)"
	docker build -t rtvsweb:$DOCKER_RTVSWEB_NEW_VERSION .
 
	# Bestimmen Sie, ob ein Image vorhanden ist, und erstellen Sie eine entsprechende Containerinstanz, wenn es für i in [`Docker-Images`] vorhanden ist.
		#Aussagen
		wenn [[ "$i" == "$DOCKER_RTVSWEB_NEW_VERSION" ]]; dann
			DOCKER_IMAGE_IS_MATCH_TAR_FILE="wahr"
			echo "Das neuste Build-Image wurde gefunden!"
			führen Sie Docker-Service-Image aus
			brechen
		fi
	Erledigt
	wenn [[ $DOCKER_IMAGE_IS_MATCH_TAR_FILE == "false" ]]; dann
		echo "Das erstellte Image entspricht nicht der neusten Version, die Installation wird beendet!"
		Ausfahrt 1
	fi
 
	echo "Liste der Docker-Images nach dem Erstellen:"
	Docker-Bilder
 
	echo "Liste der aktuell laufenden Docker-Containerinstanzen:"
	Docker PS
}
 
Funktion run_docker_service_image()
{
	echo "Docker-Servicecontainer wird gestartet …"
	:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::
	wenn [[ $DB_MYSQL_HOST == "mysql5.7" ]]; dann
		# ===link link mode echo "rtvsweb--Containerbetrieb---Linkmodus"
		docker run -it --name $DOCKER_RTVSWEB_CONTAINER_NAME --privileged=true --link mysql5.7:mysql5.7 -v /usr/local/rtvs:/MeineDaten -e MyDataPath=/MeineDaten -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
	anders
		# ===Normalmodus echo "rtvsweb--Containerbetrieb---Normalmodus"
		docker run -it --name $DOCKER_RTVSWEB_CONTAINER_NAME --privileged=true -v /usr/local/rtvs:/MeineDaten -e MeinDatenpfad=/MeineDaten -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
}
 
##########################Tools und Prozessanpassung###################################
 
Funktion editXml()
{
  Wert = `echo $ {@:3}`
  echo "XML-Datei wird geändert: $1…"
  echo "XML-Datei ändern: [0]=$1, [1]=$2, [2]=$val"
  echo "XML-Datei $2 Tag-Wert=$val"
  sed -i "s/<$2>.*<\/$2>/<$2>${val}<\/$2></g" $1
}
 
Funktion init_mysql_conn()
{
	wenn [[ "$DB_MYSQL_HOST" == "localhost" ]]; dann
		mysql="Datenbank=Dateicache;Datenquelle=$MASTER_LAN_IP;Port=3366;Benutzer-ID=rtvsweb;Passwort=rtvs2018;Zeichensatz=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‘`
	anders
		mysql="Datenbank=filecache;Datenquelle=mysql5.7;Port=3306;Benutzer-ID=rtvsweb;Passwort=rtvs2018;Zeichensatz=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
} 
 
Funktion editSpecificConfig()
{
  init_mysql_conn
	echo "Informationen zu /usr/local/rtvs/SettingConfig.xml abrufen …"
	cat /usr/local/rtvs/SettingConfig.xml
 
  # Bestimmen Sie, ob es gesetzt werden kann, wenn [[ "$SYSTEM_ALLOW_TO_SET" == "true" ]]; dann
		read -p ">>>Möchten Sie die Verbindungszeichenfolge für die Redis-Konfiguration ändern? j/n: " ans
		echo "$ans"
		wenn [[ "$ans" == "y" ]]; dann
			read -p "Bitte geben Sie die Verbindungszeichenfolge für die Redis-Konfiguration ein:" redis
			echo "Neue Redis-Verbindungszeichenfolge: $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 "Holen Sie sich die geänderte Verbindungszeichenfolge für die Redis-Konfiguration ... RedisExchangeHosts=$DB_REDIS_CONNECTION_STRING"
		fi
 
		read -p ">>>Möchten Sie die Verbindungszeichenfolge für die Mysql-Konfiguration ändern? j/n: " ans
		echo "$ans"
		wenn [[ "$ans" == "y" ]]; dann
			read -p "Bitte geben Sie die Mysql-Konfigurationsverbindungszeichenfolge ein:" mysql
			echo "Neue Mysql-Verbindungszeichenfolge: $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 "Holen Sie sich die geänderte Mysql-Konfigurationsverbindungszeichenfolge ...MysqlConnectionString=$DB_MYSQL_CONNECTION_STRING"
		fi
	fi
}
 
Funktion remoteRedisAndMysqlConfig()
{
 
	echo "Informationen zu /usr/local/rtvs/SettingConfig.xml abrufen …"
	cat /usr/local/rtvs/SettingConfig.xml
	# Setze die Redis-Verbindungszeichenfolge read -p "Möchtest du die Verbindungszeichenfolge für die Redis-Konfiguration ändern? j/n: " ans
	echo "$ans"
	wenn [[ "$ans" == "y" ]]; dann
		read -p "Bitte geben Sie die Redis-Verbindungszeichenfolge ein:" redis
		echo "Neue Redis-Verbindungszeichenfolge: $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 "Holen Sie sich die geänderte Verbindungszeichenfolge für die Redis-Konfiguration ... RedisExchangeHosts=$DB_REDIS_CONNECTION_STRING"
	fi
	
 
	read -p "Möchten Sie die Verbindungszeichenfolge für die Mysql-Konfiguration ändern? j/n: " ans
	echo "$ans"
	wenn [[ "$ans" == "y" ]]; dann
		read -p "Bitte geben Sie die Mysql-Verbindungszeichenfolge ein:" mysql
		echo "Neue Mysql-Verbindungszeichenfolge: $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 "Holen Sie sich die geänderte Mysql-Konfigurationsverbindungszeichenfolge ...MysqlConnectionString=$DB_MYSQL_CONNECTION_STRING"
	fi
	
}
 
Funktion Hilfe()
{
	echo "************************************************"
	echo "************ Beschreibung der aufrufenden Methode************"
	echo "************************************************"
	echo "Zeigen Sie die Kernkonfigurationsdatei an: cat ./SettingConfig.xml"
	echo "Hilfe-Methodenbeschreibung: sh ./install.sh help"
	echo "Redis- und MySQL-Verbindungszeichenfolgen ändern: sh ./install.sh editXml [XMLFilePath] [tag] ['value'] "
  echo "************************************************"
	echo "************ Schnelle benutzerdefinierte Installation*************"
	echo "************************************************"
	echo "1. Lokale MySQL-Installation ausführen (wget-Download-Dateiinstallation...zeitaufwändig): sh ./install.sh by_local_mysql_installer"
	echo "2. Führen Sie die Docker Mysql-Installation aus: sh ./install.sh by_docker_mysql_installer"
	echo "3. Smart Detection bestimmt die Installationsmethode von MySQL (wenn MySQL bereits auf dem lokalen Computer installiert ist, verwenden Sie es direkt): sh ./install.sh by_smart_installer"
	echo "4. Für die vereinfachte Installation sind nur die Redis- und MySQL-Verbindungszeichenfolgen erforderlich (sehr einfache Methode): sh ./install.sh by_simple_installer"
	echo "Beschreibung:\r Die oben genannten 4 Methoden beinhalten bereits die Installation der Docker-Anwendung!"
}
 
Funktion abgeschlossen()
{
	echo "*********************Installationsergebnis:*****************"
	# Bridge Bridge-Modus #echo "Netzwerkinstanz, share_network-bezogene Containerinformationen:"
	#Docker-Netzwerk prüfen Share_Network
	version_step=1
 
  # Notieren Sie die nächste Versionsnummer, wenn [[ "$DOCKER_RTVSWEB_VERSION_TAG" == "VersionFirst" ]]; dann
		DOCKER_RTVSWEB_FIRST_VERSION=$((DOCKER_RTVSWEB_FIRST_VERSION+Versionsschritt))
		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
	wenn [[ "$DOCKER_RTVSWEB_VERSION_TAG" == "VersionSecond" ]]; dann
		DOCKER_RTVSWEB_SECOND_VERSION=$((DOCKER_RTVSWEB_SECOND_VERSION+Versionsschritt))
		sed -i "s/<Zweite Version>.*<\/Zweite Version>/<Zweite Version>$DOCKER_RTVSWEB_SECOND_VERSION<\/Zweite Version>/g" /usr/local/rtvs/VersionConfig.xml
		sed -i "s/<VersionThird>.*<\/VersionThird>/<VersionThird>0<\/VersionThird>/g" /usr/local/rtvs/VersionConfig.xml
	fi
	wenn [[ "$DOCKER_RTVSWEB_VERSION_TAG" == "VersionThird" ]]; dann
		DOCKER_RTVSWEB_THIRD_VERSION=$((DOCKER_RTVSWEB_THIRD_VERSION+Versionsschritt))
		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-Verbindungszeichenfolge: $DB_REDIS_CONNECTION_STRING"
	echo "Mysql-Verbindungszeichenfolge: $DB_MYSQL_CONNECTION_STRING"
	echo "Standard-Video-Cache-Verzeichnis: $VIDEO_CACHE_PATH"
	echo "Containerinstanzen ausführen:"
	Docker PS
  echo "Die dem Container entsprechende IP-Adresse:"
  docker_container_ip mysql5.7
  wenn [[ "$DOCKER_CONTAINER_TEMP_HOST" != "" ]]; dann
    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-Zugriff überprüfen: curl http://cvtsp.com:38067/"
	echo "*********************Installation abgeschlossen!*****************"
}
 
Funktion 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 '<Second-Version>.+</Second>' /usr/local/rtvs/VersionConfig.xml | sed 's/<Second-Version>//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 "Aktuelle rtvsweb-Version: $DOCKER_RTVSWEB_NEW_VERSION"
  echo "Aktuelles Upgrade-Format für die rtvsweb-Version: $DOCKER_RTVSWEB_VERSION_TAG"
}
 
Funktion by_local_mysql_installer()
{
	# Docker-Installation docker_install
  # Mysql-Installation und ihre Skripterstellung mysql_install "by_local_mysql_installer"
  # Bild erstellenwenn [[ $? -eq 0 ]]; dann
		Docker-Build-Image
		wenn [[ $? -eq 0 ]]; dann
			echo "Image erfolgreich erstellt!"
		anders
			echo "Imageerstellung fehlgeschlagen!"
			Ausfahrt 
		fi
  anders
		Ausfahrt
  fi
  # Ändern Sie den Pfad und die Datenquelle, die von imageeditSpecificConfig verwendet werden
  # Ausgabe nach Abschluss abgeschlossen
}
 
Funktion by_docker_mysql_installer()
{
  # Docker-Installation docker_install
  # Mysql-Installation und ihre Skripterstellungmysql_install "by_docker_mysql_installer"
  # Bild erstellenwenn [[ $? -eq 0 ]]; dann
		Docker-Build-Image
		wenn [[ $? -eq 0 ]]; dann
			echo "Image erfolgreich erstellt!"
		anders
			echo "Imageerstellung fehlgeschlagen!"
			Ausfahrt 
		fi
	anders
		Ausfahrt
  fi
  # Ändern Sie den Pfad und die Datenquelle, die von imageeditSpecificConfig verwendet werden
  # Ausgabe nach Abschluss abgeschlossen
}
 
Funktion by_smart_installer()
{
  # Docker-Installation docker_install
  # Mysql-Installation und ihre Skripterstellung mysql_install "by_smart_installer"
  # Bild erstellenwenn [[ $? -eq 0 ]]; dann
		Docker-Build-Image
		wenn [[ $? -eq 0 ]]; dann
			echo "Image erfolgreich erstellt!"
		anders
			echo "Imageerstellung fehlgeschlagen!"
			Ausfahrt 
		fi
  anders
		Ausfahrt
  fi
  # Ändern Sie den Pfad und die Datenquelle, die von imageeditSpecificConfig verwendet werden
  # Ausgabe nach Abschluss abgeschlossen
}
 
Funktion by_simple_installer()
{
  # Docker-Installation docker_install  
  # Image erstellen docker_build_image 
  wenn [[ $? -eq 0 ]]; dann
		echo "Image erfolgreich erstellt!"
	anders
		echo "Imageerstellung fehlgeschlagen!"
		Ausfahrt 
	fi
  # Ändern Sie den Pfad und die Datenquelle remoteRedisAndMysqlConfig, die vom Image verwendet werden
  # Ausgabe nach Abschluss abgeschlossen
} 
 
wenn [[ $# -gt 0 ]]; dann
	echo "Überprüfen Sie, ob für die Installation erforderliche Dateien vorhanden sind …"
	init_files
	wenn [[ $? -eq 0 ]]; dann
		echo "Die Datei zur Installation des Docker-Dienstes ist vorhanden, Überprüfung bestanden!"
	anders
		echo "Die Datei zur Installation des Docker-Dienstes fehlt und die Installation wurde abgebrochen!"
		Ausfahrt 
	fi
 
  echo "rtvsweb-Versionsprüfung …"
  version_management 
  echo "Holen Sie sich die lokale LAN-IP-Adresse …"
	init_docker_master_ip
	echo "Lokale IP-Adresse...MASTER_LAN_IP=$MASTER_LAN_IP"
	#Aussagen 
	wenn [[ "$1" == "by_local_mysql_installer" ]]; dann
		#Aussagen
		von_local_mysql_installer 
	fi
	wenn [[ "$1" == "by_docker_mysql_installer" ]]; dann
		#Aussagen
		von_docker_mysql_installer 
	fi
	wenn [[ "$1" == "by_smart_installer" ]]; dann
		#Aussagen
		von_smart_installer 
	fi	
	wenn [[ "$1" == "by_simple_installer" ]]; dann
		#Aussagen
		von_simple_installer 
	fi	
	wenn [[ "$1" == "editXml" ]]; dann
 
		wenn [[ $# -eq 4 ]]; dann
			#Aussagen
			XML bearbeiten $2 $3 $4
		anders
			echo "editXml-Parameternummer stimmt nicht überein!"
 
	  fi
	fi	
	wenn [[ "$1" == "Hilfe" ]]; dann
		#Aussagen
		helfen
	fi	
anders
	helfen
fi

Allgemeine Ideen zur Designumsetzung

1. Vorbereitung und Installation der Docker-Umgebung

2. Vorbereitung und Installation der MySQL-Umgebung

3. Docker-Wissen: Erstellen und Ausführen

4. Versionsverwaltung von Docker-Images

5. Netzwerkzugriff während der Toleranz: --link

6. Bildverpackungsverlauf

7. Servicebetriebswirkung

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Docker ermöglicht den nahtlosen Aufruf von Shell-Befehlen zwischen Container und Host
  • So überwachen Sie den Ausführungsstatus eines Docker-Container-Shell-Skripts
  • So führen Sie Linux-Shell-Befehle in Docker aus
  • Detaillierte Erläuterung der Startreihenfolge des Docker-Containers mithilfe eines Shell-Skripts
  • Führen Sie die Shell oder das Programm im Docker-Container auf dem Host aus.
  • Verwenden Sie Shell-Skripte, um Docker-Dienste stapelweise zu starten und zu stoppen

<<:  Analyse der vernachlässigten DOCTYPE-Beschreibung

>>:  Zusammenfassung mehrerer Methoden zur Implementierung der vertikalen Zentrierung mit CSS

Artikel empfehlen

Implementierungsbeispiel für das Zurücksetzen des CSS-Reset-Stils

Einführung: Alle Browser verfügen über Standardst...

Erfahrungsaustausch zur MySQL-Slave-Wartung

Vorwort: Die MySQL-Master-Slave-Architektur dürft...

So legen Sie die Breite und Höhe von HTML-Tabellenzellen fest

Beim Erstellen von Webseiten tritt häufig das Pro...

SASS Style Programmierhandbuch für CSS

Da immer mehr Entwickler SASS verwenden, müssen w...

So erstellen Sie einen Pod in Kubernetes

Inhaltsverzeichnis Wie erstelle ich einen Pod? We...

So aktivieren Sie Flash in Windows Server 2016

Ich habe vor Kurzem VMware Horizon bereitgestellt...

Erläuterung des Vue.js $refs-Anwendungsfalls

Trotz Props und Events müssen Sie manchmal immer ...

Detailliertes Tutorial zur Installation von Python 3.8.1 unter Linux

Dieses Beispiel nimmt die Installation von Python...

Detaillierte Erklärung zu React Hooks

Inhaltsverzeichnis Was sind Hooks? Klassenkompone...

Beispiele für die Interaktion zwischen MySQL und Python

Inhaltsverzeichnis 1. Daten vorbereiten Erstellen...

So stellen Sie Tomcat stapelweise mit Ansible bereit

1.1 Aufbau der Verzeichnisstruktur Dieser Vorgang...

Implementierungscode der Front-End-HTML-Skin-Änderungsfunktion

50 Zeilen Code zum Ändern von 5 Hautfarben, einsc...

Implementierung der CSS-Variableneinfügung im Vue3-Stil

Inhaltsverzeichnis Zusammenfassung Einfaches Beis...

Implementierung der MVCC-Mehrversions-Parallelitätskontrolle von MySQL

1 Was ist MVCC Der vollständige Name von MVCC lau...

Kopieren Sie den Inhalt einer Datei an das Ende einer anderen Datei in Linux

Problembeschreibung: Der Inhalt der Datei 11 laut...