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 を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。 以下もご興味があるかもしれません:
|
<<: CSS で垂直方向の中央揃えを実装するいくつかの方法の概要
>>: MySQL UPDATE ステートメントの非標準実装コード
目次1. 関数デバウンス1. 画像安定化とは何ですか? 2. 関数のスロットリング2.1 タイマーの...
1. コマンドの紹介contab (cron テーブル) コマンドは、Windows のスケジュール...
uwsgi+nginx プロキシ Django をデプロイする場合、uwsgi を使用したアクセスは...
1. コンポーネント First.js にはサブコンポーネントがあります。 './Admin...
突然、ドキュメントの保存と共同作業のためのプライベート サービスを構築する必要がありました。多くの場...
1. ダウンロードしたファイルを以下のように解凍します。 。 2. 環境変数に解凍ディレクトリを追加...
目次序文1. 準備2. インストール3. 環境変数を設定する1. 「新規」をクリックすると、ポップア...
Mysql 8.0 のインストールの問題とパスワードのリセット1: MySqlをダウンロードする公式...
レイアウトにul>liを使用した単一行レイアウトを以下に示します。 <ul class=...
結合では、ネスト ループ結合アルゴリズムが使用されます。ネスト ループ結合には 3 つの種類がありま...
1. PPTP VPNを構築するには、ポート1723とGREプロトコルを開く必要があります。 1. ...
rpm パッケージのインストールは比較的簡単なので、ここでは説明しません。ほとんどのオープンソース ...
この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...
目次コードの最適化v-for でキーを使用するv-if/v-else-if/v-else でキーを使...
序文CSS で水平方向と垂直方向に中央揃えする方法はたくさんあります。この記事で紹介する方法は非常に...