From 0a330752c397d7d26e09d8fd31e1dd6abb63b743 Mon Sep 17 00:00:00 2001 From: zhangsz Date: Fri, 14 Feb 2025 18:29:44 +0800 Subject: [PATCH] feat: upgrade process --- build/bin/wfcsetup.sh | 26 ++++++++++++++++++-------- build/bin/wfcupgdb.sh | 20 ++++++++++++++------ 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/build/bin/wfcsetup.sh b/build/bin/wfcsetup.sh index 2e92293..a5ff460 100755 --- a/build/bin/wfcsetup.sh +++ b/build/bin/wfcsetup.sh @@ -161,14 +161,24 @@ case "$1" in # upgrade database cd ${docker_work_dir} docker-compose up -d wfc-mysql - sleep 10 - if docker ps --filter "name=$CONTAINER_NAME" --format "{{.Names}}" | grep -q "$CONTAINER_NAME"; then - echo "Upgrade database: " - ${wfc_work_dir}/bin/wfcupgdb.sh all - else - echo "Contaier $CONTAINER_NAME not run, please run first..." - fi - ;; + + # 检查容器健康状态 + timeout=30 + interval=2 + elapsed=0 + while [ $elapsed -lt $timeout ]; do + health_status=$(docker inspect --format='{{.State.Health.Status}}' $CONTAINER_NAME) + if [ "$health_status" == "healthy" ]; then + echo "Upgrade database: " + ${wfc_work_dir}/bin/wfcupgdb.sh all + exit 0 + fi + sleep $interval + elapsed=$((elapsed + interval)) + done + + echo "Container $CONTAINER_NAME is not healthy after $timeout seconds, please check the container status." + ;; base) # build docker compose cd ${docker_work_dir} diff --git a/build/bin/wfcupgdb.sh b/build/bin/wfcupgdb.sh index 7e45e0d..3842d5d 100755 --- a/build/bin/wfcupgdb.sh +++ b/build/bin/wfcupgdb.sh @@ -6,6 +6,14 @@ mysql_sql_dir=${docker_work_dir}/mysql/db docker_sql_dir=/docker-entrypoint-initdb.d docker_mysql_conf_d=/etc/mysql/conf.d docker_my_conf_file=${docker_mysql_conf_d}/my.cnf +mysql_ocker_name=wfc-mysql + +# 在容器内生成 my.cnf 文件 +docker exec ${mysql_ocker_name} bash -c "cat < ${docker_my_conf_file} +[client] +user=root +password=\${MYSQL_ROOT_PASSWORD} +EOF" case "$1" in system) @@ -14,8 +22,8 @@ case "$1" in for sql in ./upgrade/${db_name}/*.sql; do if [ -f "$sql" ]; then echo -n "Execute SQL script: ${sql} ... " - # docker exec -i wfc-mysql mysql -u ${db_name} < ${sql}; - docker exec -i wfc-mysql mysql --defaults-extra-file=${docker_my_conf_file} ${db_name} < ${sql} + # docker exec -i ${mysql_ocker_name} mysql -u ${db_name} < ${sql}; + docker exec -i ${mysql_ocker_name} mysql --defaults-extra-file=${docker_my_conf_file} ${db_name} < ${sql} if [ $? = 0 ]; then echo "done" fi @@ -30,7 +38,7 @@ case "$1" in for sql in ./upgrade/${db_name}/*.sql; do if [ -f "$sql" ]; then echo -n "Execute SQL script: ${sql} ... " - docker exec -i wfc-mysql mysql --defaults-extra-file=${docker_my_conf_file} ${db_name} < ${sql} + docker exec -i ${mysql_ocker_name} mysql --defaults-extra-file=${docker_my_conf_file} ${db_name} < ${sql} if [ $? = 0 ]; then echo "done" fi @@ -45,7 +53,7 @@ case "$1" in for sql in ./upgrade/${db_name}/*.sql; do if [ -f "$sql" ]; then echo -n "Execute SQL script: ${sql} ... " - docker exec -i wfc-mysql mysql --defaults-extra-file=${docker_my_conf_file} ${db_name} < ${sql} + docker exec -i ${mysql_ocker_name} mysql --defaults-extra-file=${docker_my_conf_file} ${db_name} < ${sql} if [ $? = 0 ]; then echo "done" fi @@ -55,13 +63,13 @@ case "$1" in done ;; all) + $0 config $0 system $0 user - $0 config ;; *) echo "WANFi Control and Billing System Upgrade Database ..." - echo "Usage: $0 system|user|config|all" + echo "Usage: $0 config|system|user|all" exit 1 ;; esac \ No newline at end of file