Commit 63bd524e authored by Administrator's avatar Administrator

Update 2 files via Son of Anton

parent 47f482ca
Pipeline #16 canceled with stage
This diff is collapsed.
...@@ -2,57 +2,150 @@ ...@@ -2,57 +2,150 @@
set -e set -e
echo "=== AL-ARCADE HR Platform v3.0 — Starting ===" echo "=== AL-ARCADE HR Platform v3.0 — Starting ==="
echo "Timestamp: $(date)"
echo ""
# ─── Read Environment ───
DB_HOST="${DB_HOST:-srv-captain--mysql-db}" DB_HOST="${DB_HOST:-srv-captain--mysql-db}"
DB_PORT="${DB_PORT:-3306}" DB_PORT="${DB_PORT:-3306}"
DB_NAME="${DB_NAME:-al_arcade_hr}"
DB_USER="${DB_USER:-root}" DB_USER="${DB_USER:-root}"
DB_PASS="${DB_PASS:-Alarcade123#}" DB_PASS="${DB_PASS:-Alarcade123#}"
DB_NAME="${DB_NAME:-al_arcade_hr}"
# Wait for MySQL echo "Configuration:"
echo " DB_HOST: ${DB_HOST}"
echo " DB_PORT: ${DB_PORT}"
echo " DB_NAME: ${DB_NAME}"
echo " DB_USER: ${DB_USER}"
echo " DB_PASS: [REDACTED]"
echo ""
# ─── Debug: DNS Resolution ───
echo "Attempting DNS resolution for ${DB_HOST}..."
if getent hosts "${DB_HOST}" > /dev/null 2>&1; then
RESOLVED_IP=$(getent hosts "${DB_HOST}" | awk '{ print $1 }')
echo " ✅ ${DB_HOST} resolves to ${RESOLVED_IP}"
else
echo " ❌ CANNOT RESOLVE ${DB_HOST}"
echo ""
echo " This means either:"
echo " 1. You haven't created a MySQL app named 'mysql-db' on CapRover"
echo " 2. Your MySQL app has a different name (check CapRover dashboard)"
echo " 3. The apps aren't on the same Docker network"
echo ""
echo " To fix on CapRover:"
echo " - Go to Apps → One-Click Apps → MySQL"
echo " - Name it 'mysql-db' (creates hostname 'srv-captain--mysql-db')"
echo " - OR set DB_HOST env var on your app to the correct hostname"
echo ""
echo " Available Docker networks this container can see:"
cat /etc/hosts 2>/dev/null || true
echo ""
echo " Proceeding anyway (MySQL might come up later)..."
fi
echo ""
# ─── Wait for MySQL ───
echo "Waiting for MySQL at ${DB_HOST}:${DB_PORT}..." echo "Waiting for MySQL at ${DB_HOST}:${DB_PORT}..."
MAX_TRIES=30 MAX_ATTEMPTS=60
COUNT=0 ATTEMPT=0
while ! mysqladmin ping -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" --silent 2>/dev/null; do
COUNT=$((COUNT + 1)) while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
if [ $COUNT -ge $MAX_TRIES ]; then ATTEMPT=$((ATTEMPT + 1))
echo "ERROR: MySQL not available after ${MAX_TRIES} attempts. Starting anyway..."
if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" --silent 2>/dev/null; then
echo "✅ MySQL is ready! (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
break break
fi fi
echo " MySQL not ready... (attempt $COUNT/$MAX_TRIES)"
# Every 10 attempts, try a raw TCP connection test for better debugging
if [ $((ATTEMPT % 10)) -eq 0 ]; then
echo " MySQL not ready... (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
echo " TCP test: $(timeout 2 bash -c "echo > /dev/tcp/${DB_HOST}/${DB_PORT}" 2>&1 && echo 'port open' || echo 'port closed/unreachable')"
else
echo " MySQL not ready... (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
fi
sleep 2 sleep 2
done done
echo "MySQL is up."
# Create database if it doesn't exist if [ $ATTEMPT -ge $MAX_ATTEMPTS ]; then
echo "Ensuring database exists..." echo ""
mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" -e "CREATE DATABASE IF NOT EXISTS \`${DB_NAME}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>/dev/null || true echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ ❌ FATAL: Could not connect to MySQL after ${MAX_ATTEMPTS} attempts ║"
echo "║ ║"
echo "║ Host: ${DB_HOST}:${DB_PORT} "
echo "║ User: ${DB_USER} "
echo "║ ║"
echo "║ CHECKLIST: ║"
echo "║ 1. Is MySQL running? Check CapRover dashboard. ║"
echo "║ 2. Is the app name correct? Should be 'mysql-db' ║"
echo "║ for hostname 'srv-captain--mysql-db' ║"
echo "║ 3. Are credentials correct? Check env vars. ║"
echo "║ 4. Try: CapRover → App → Edit Default Nginx Config ║"
echo "║ to check networking. ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo ""
echo "Starting Apache anyway (app will show DB errors)..."
exec "$@"
exit 0
fi
# ─── Create Database if not exists ───
echo ""
echo "Ensuring database '${DB_NAME}' exists..."
mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" -e "CREATE DATABASE IF NOT EXISTS \`${DB_NAME}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>/dev/null
echo "✅ Database ensured."
# ─── Run Schema if tables don't exist ───
TABLE_COUNT=$(mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" -N -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB_NAME}' AND TABLE_TYPE='BASE TABLE';" 2>/dev/null)
echo "Current table count: ${TABLE_COUNT}"
# Check table count if [ "${TABLE_COUNT}" -lt "70" ] 2>/dev/null; then
TABLE_COUNT=$(mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" -N -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = '${DB_NAME}';" 2>/dev/null || echo "0") echo "Running schema migration (expected 73 tables, found ${TABLE_COUNT})..."
if [ "$TABLE_COUNT" -lt "70" ]; then if [ -f "/var/www/html/database/schema.sql" ]; then
echo "Database has $TABLE_COUNT tables (need 73). Running schema..." mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" < /var/www/html/database/schema.sql 2>&1
if [ -f /var/www/html/database/schema.sql ]; then echo "✅ Schema applied."
mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" < /var/www/html/database/schema.sql 2>&1 && echo "✅ Schema deployed." || echo "⚠️ Schema may already exist."
else else
echo "❌ schema.sql not found!" echo "⚠️ No schema.sql found at /var/www/html/database/schema.sql"
echo " Skipping schema creation."
fi fi
# Run seed data
if [ -f "/var/www/html/database/seed.sql" ]; then
echo "Running seed data..." echo "Running seed data..."
if [ -f /var/www/html/database/seed.sql ]; then mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" < /var/www/html/database/seed.sql 2>&1
mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" < /var/www/html/database/seed.sql 2>&1 && echo "✅ Seed data applied." || echo "⚠️ Seed data may already exist." echo "✅ Seed data applied."
fi fi
else
echo "✅ Schema already exists (${TABLE_COUNT} tables). Skipping migration."
fi
# ─── Create Super Admin ───
SA_EXISTS=$(mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" -N -e "SELECT COUNT(*) FROM \`${DB_NAME}\`.users WHERE role='super_admin';" 2>/dev/null || echo "0")
echo "Creating super admin..." if [ "${SA_EXISTS}" = "0" ]; then
php /var/www/html/cli/create-superadmin.php 2>&1 || echo "⚠️ Super admin may already exist." echo "Creating Super Admin..."
if [ -f "/var/www/html/cli/create-superadmin.php" ]; then
php /var/www/html/cli/create-superadmin.php
fi
else else
echo "Database has $TABLE_COUNT tables. Schema OK. Skipping." echo "✅ Super Admin already exists. Skipping."
fi fi
# Fix permissions # ─── Fix Permissions ───
echo "Setting permissions..."
chown -R www-data:www-data /var/www/html/storage 2>/dev/null || true chown -R www-data:www-data /var/www/html/storage 2>/dev/null || true
chmod -R 775 /var/www/html/storage 2>/dev/null || true chmod -R 775 /var/www/html/storage 2>/dev/null || true
echo "=== AL-ARCADE HR v3.0 Ready. Launching Apache ===" echo ""
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ ✅ AL-ARCADE HR Platform v3.0 — Ready! ║"
echo "║ Starting Apache... ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo ""
# ─── Start Apache ───
exec "$@" exec "$@"
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment