Fix docker-entrypoint to wait longer for DB and pass commands correctly

This commit is contained in:
2026-04-24 13:19:38 -03:00
parent cc47981915
commit 21080c1fa3
+12 -9
View File
@@ -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 "$@"