diff --git a/docker/production/start-app.sh b/docker/production/start-app.sh index f6255c9..0d0df99 100644 --- a/docker/production/start-app.sh +++ b/docker/production/start-app.sh @@ -5,9 +5,24 @@ if [ ! -f /var/www/html/backend/.env ]; then cp /var/www/html/backend/.env.example /var/www/html/backend/.env 2>/dev/null || touch /var/www/html/backend/.env fi -# Wait for database to be ready +# Wait for database to be ready using PHP echo "Waiting for database..." -while ! mysql -h db -u ffr_user -pffr_password --connect-timeout=2 -e "SELECT 1" >/dev/null 2>&1; do +until php -r " +\$host = getenv('DB_HOST') ?: 'db'; +\$user = getenv('DB_USERNAME') ?: 'ffr_user'; +\$pass = getenv('DB_PASSWORD'); +\$db = getenv('DB_DATABASE') ?: 'ffr'; +try { + \$pdo = new PDO(\"mysql:host=\$host;dbname=\$db\", \$user, \$pass, [ + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false + ]); + echo 'Database ready'; + exit(0); +} catch (Exception \$e) { + exit(1); +} +" 2>/dev/null; do echo "Database not ready, waiting..." sleep 1 done