mirvmon/docker/init.sh

53 lines
1.5 KiB
Bash

#!/bin/bash
# docker/init.sh — Entry point script
# Ждёт БД, запускает миграции, потом стартует PHP-FPM
set -e
DB_HOST="${DB_HOST:-db}"
DB_PORT="${DB_PORT:-3306}"
DB_NAME="${DB_NAME:-monitoring_system}"
DB_USER="${DB_USERNAME:-mon_user}"
DB_PASS="${DB_PASSWORD:-mon_password_123}"
# Флаг для отключения SSL (MariaDB в контейнере без SSL)
MYSQL_OPTS="--skip-ssl"
echo "🚀 MirvMon — Starting up..."
# ------------------------------------------
# 1. Ожидание готовности БД
# ------------------------------------------
echo "⏳ Waiting for MariaDB at ${DB_HOST}:${DB_PORT}..."
MAX_RETRIES=30
RETRY=0
while ! mysql $MYSQL_OPTS -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" -e "SELECT 1;" "$DB_NAME" >/dev/null 2>&1; do
RETRY=$((RETRY + 1))
if [ $RETRY -ge $MAX_RETRIES ]; then
echo "❌ Database not ready after $MAX_RETRIES attempts"
exit 1
fi
echo " Retry $RETRY/$MAX_RETRIES..."
sleep 2
done
echo "✅ Database is ready"
# ------------------------------------------
# 2. Запуск миграций
# ------------------------------------------
echo "📦 Running database migrations..."
# Экспортием переменные для migrate.sh
export DB_HOST DB_PORT DB_NAME DB_USERNAME DB_PASSWORD
migrate.sh
echo ""
# ------------------------------------------
# 3. Запуск PHP-FPM
# ------------------------------------------
echo "🟢 Starting PHP-FPM..."
exec "$@"