Fix docker-entrypoint to wait longer for DB and pass commands correctly
This commit is contained in:
+12
-9
@@ -8,7 +8,7 @@ MYSQL_PID=$!
|
|||||||
|
|
||||||
# Wait for MariaDB to be ready
|
# Wait for MariaDB to be ready
|
||||||
echo "Waiting for MariaDB to be ready..."
|
echo "Waiting for MariaDB to be ready..."
|
||||||
for i in {1..30}; do
|
for i in {1..60}; do
|
||||||
if mysqladmin ping -h localhost --silent 2>/dev/null; then
|
if mysqladmin ping -h localhost --silent 2>/dev/null; then
|
||||||
echo "MariaDB is ready!"
|
echo "MariaDB is ready!"
|
||||||
break
|
break
|
||||||
@@ -18,23 +18,25 @@ done
|
|||||||
|
|
||||||
# Create database if it doesn't exist
|
# Create database if it doesn't exist
|
||||||
echo "Creating database if not exists..."
|
echo "Creating database if not exists..."
|
||||||
mysql -h localhost -u root -e "CREATE DATABASE IF NOT EXISTS \`${DB_NAME:-hospital}\`;"
|
DB_NAME="${DB_NAME:-hospital}"
|
||||||
|
mysql -h localhost -u root -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;"
|
||||||
|
|
||||||
# Create user and grant permissions if DB_PASSWORD is set
|
# Create user and grant permissions if DB_PASSWORD is set
|
||||||
if [ -n "$DB_PASSWORD" ] && [ "$DB_PASSWORD" != "" ]; then
|
if [ -n "$DB_PASSWORD" ] && [ "$DB_PASSWORD" != "" ]; then
|
||||||
echo "Creating user and setting permissions..."
|
echo "Creating user and setting permissions..."
|
||||||
|
DB_USER="${DB_USER:-hospital}"
|
||||||
|
|
||||||
# Check if user exists
|
# Check if user exists
|
||||||
USER_EXISTS=$(mysql -h localhost -u root -N -e "SELECT COUNT(*) FROM mysql.user WHERE User='${DB_USER:-root}' AND Host='%';")
|
USER_EXISTS=$(mysql -h localhost -u root -N -e "SELECT COUNT(*) FROM mysql.user WHERE User='$DB_USER' AND Host='%';")
|
||||||
|
|
||||||
if [ "$USER_EXISTS" = "0" ]; then
|
if [ "$USER_EXISTS" = "0" ]; then
|
||||||
mysql -h localhost -u root -e "CREATE USER '${DB_USER:-root}'@'%' IDENTIFIED BY '${DB_PASSWORD}';"
|
mysql -h localhost -u root -e "CREATE USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';"
|
||||||
mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON ${DB_NAME:-hospital}.* TO '${DB_USER:-root}'@'%';"
|
mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%';"
|
||||||
mysql -h localhost -u root -e "FLUSH PRIVILEGES;"
|
mysql -h localhost -u root -e "FLUSH PRIVILEGES;"
|
||||||
else
|
else
|
||||||
echo "User already exists, updating password..."
|
echo "User already exists, updating password..."
|
||||||
mysql -h localhost -u root -e "ALTER USER '${DB_USER:-root}'@'%' IDENTIFIED BY '${DB_PASSWORD}';"
|
mysql -h localhost -u root -e "ALTER USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';"
|
||||||
mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON ${DB_NAME:-hospital}.* TO '${DB_USER:-root}'@'%';"
|
mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%';"
|
||||||
mysql -h localhost -u root -e "FLUSH PRIVILEGES;"
|
mysql -h localhost -u root -e "FLUSH PRIVILEGES;"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -45,8 +47,9 @@ echo "=== MariaDB initialization complete ==="
|
|||||||
if [ "$1" = "nginx.sh" ]; then
|
if [ "$1" = "nginx.sh" ]; then
|
||||||
echo "Starting nginx..."
|
echo "Starting nginx..."
|
||||||
nginx
|
nginx
|
||||||
|
shift
|
||||||
exec "$@"
|
exec "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Otherwise wait for the process
|
# Run the command passed to the container
|
||||||
wait
|
exec "$@"
|
||||||
Reference in New Issue
Block a user