Update UPDATE.sh
This commit is contained in:
parent
ac966d0c0e
commit
943f14d67e
1 changed files with 101 additions and 0 deletions
|
@ -666,6 +666,107 @@ celebrate() {
|
|||
}
|
||||
|
||||
|
||||
|
||||
replace_mysql_with_docker() {
|
||||
# MySQL
|
||||
|
||||
|
||||
|
||||
# EXPORT DATABASE!
|
||||
mysqldump --defaults-extra-file="/usr/local/admin/db.cnf" panel > /tmp/DATABASE.sql
|
||||
|
||||
|
||||
|
||||
# set random password
|
||||
MYSQL_ROOT_PASSWORD=$(openssl rand -base64 -hex 9)
|
||||
|
||||
|
||||
# run the container
|
||||
docker run -d -p 3306:3306 --name openpanel_mysql \
|
||||
-e MYSQL_ROOT_PASSWORD="$MYSQL_ROOT_PASSWORD" \
|
||||
-e MYSQL_DATABASE=panel \
|
||||
-e MYSQL_USER=panel \
|
||||
-e MYSQL_PASSWORD="$MYSQL_ROOT_PASSWORD" \
|
||||
-v openpanel_mysql_data:/var/lib/mysql \
|
||||
--memory="1g" --cpus="1" \
|
||||
--restart=always \
|
||||
--oom-kill-disable \
|
||||
mysql/mysql-server
|
||||
|
||||
|
||||
if docker ps -a --format '{{.Names}}' | grep -q "openpanel_mysql"; then
|
||||
|
||||
# show password
|
||||
echo "Generated MySQL password: $MYSQL_ROOT_PASSWORD"
|
||||
|
||||
ln -s /usr/local/admin/db.cnf /etc/my.cnf
|
||||
|
||||
# Update configuration files with new password
|
||||
sed -i "s/\"mysql_password\": \".*\"/\"mysql_password\": \"${MYSQL_ROOT_PASSWORD}\"/g" /usr/local/admin/config.json
|
||||
sed -i "s/\"mysql_user\": \".*\"/\"mysql_user\": \"panel\"/g" /usr/local/admin/config.json
|
||||
sed -i "s/password = \".*\"/password = \"${MYSQL_ROOT_PASSWORD}\"/g" /usr/local/admin/db.cnf
|
||||
sed -i "s/user = \".*\"/user = \"panel\"/g" /usr/local/admin/db.cnf
|
||||
|
||||
# Fix for: ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2
|
||||
|
||||
# Function to check if MySQL is running
|
||||
mysql_is_running() {
|
||||
if mysqladmin --defaults-extra-file="/usr/local/admin/db.cnf" ping &> /dev/null; then
|
||||
return 0 # MySQL is running
|
||||
else
|
||||
return 1 # MySQL is not running
|
||||
fi
|
||||
}
|
||||
|
||||
# Wait for MySQL to start
|
||||
wait_for_mysql() {
|
||||
retries=5
|
||||
while [ $retries -gt 0 ]; do
|
||||
if mysql_is_running; then
|
||||
return 0 # MySQL is running
|
||||
else
|
||||
echo "Waiting for MySQL to start..."
|
||||
sleep 5
|
||||
retries=$((retries - 1))
|
||||
fi
|
||||
done
|
||||
return 1 # MySQL did not start after retries
|
||||
}
|
||||
|
||||
# Wait for MySQL to start
|
||||
wait_for_mysql
|
||||
|
||||
# Create database
|
||||
mysql --defaults-extra-file="/usr/local/admin/db.cnf" -e "CREATE DATABASE IF NOT EXISTS panel;"
|
||||
#mysql --defaults-extra-file="/usr/local/admin/db.cnf" -e "GRANT PROCESS ON *.* TO 'panel'@'%';"
|
||||
mysql --defaults-extra-file="/usr/local/admin/db.cnf" -D "panel" < /tmp/DATABASE.sql
|
||||
|
||||
# Check if SQL file was imported successfully
|
||||
if mysql --defaults-extra-file="/usr/local/admin/db.cnf" -D "panel" -e "SELECT 1 FROM plans LIMIT 1;" &> /dev/null; then
|
||||
echo -e "${GREEN}Database is ready.${RESET}"
|
||||
else
|
||||
echo "SQL file import failed or database is not ready."
|
||||
radovan 1 "Installation failed!"
|
||||
fi
|
||||
|
||||
else
|
||||
echo "Docker container 'openpanel_mysql' does not exist. Please make sure the container is running."
|
||||
echo "Installation failed! "
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
post_install_message() {
|
||||
|
||||
# steps to revert the update
|
||||
|
|
Loading…
Reference in a new issue