119 lines
3.6 KiB
Bash
119 lines
3.6 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
git config --global --add safe.directory /var/www/repuve-backend-v1
|
|
|
|
echo "=== Iniciando entrypoint DESARROLLO ==="
|
|
|
|
chown -R www-data:www-data /var/www/repuve-backend-v1/storage /var/www/repuve-backend-v1/bootstrap/cache
|
|
chmod -R 775 /var/www/repuve-backend-v1/storage /var/www/repuve-backend-v1/bootstrap/cache
|
|
|
|
# Variables desde Docker environment
|
|
DB_HOST=${DB_HOST:-mysql}
|
|
DB_USERNAME=${DB_USERNAME:-root}
|
|
DB_PASSWORD=${DB_PASSWORD:-}
|
|
DB_DATABASE=${DB_DATABASE:-laravel}
|
|
MAX_RETRIES=30
|
|
RETRY_COUNT=0
|
|
|
|
echo "Configuración de BD: Host=${DB_HOST}, Usuario=${DB_USERNAME}, Base=${DB_DATABASE}"
|
|
|
|
# Función para verificar conectividad con MySQL usando PHP
|
|
check_mysql() {
|
|
php -r "
|
|
try {
|
|
\$pdo = new PDO('mysql:host=${DB_HOST};port=3306', '${DB_USERNAME}', '${DB_PASSWORD}');
|
|
\$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
exit(0);
|
|
} catch (Exception \$e) {
|
|
exit(1);
|
|
}
|
|
"
|
|
}
|
|
|
|
# Esperar a que MySQL esté disponible
|
|
echo "Esperando conexión a MySQL..."
|
|
until check_mysql; do
|
|
RETRY_COUNT=$((RETRY_COUNT + 1))
|
|
if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then
|
|
echo "ERROR: No se pudo conectar a MySQL después de $MAX_RETRIES intentos"
|
|
exit 1
|
|
fi
|
|
echo "Intento $RETRY_COUNT/$MAX_RETRIES - Esperando a MySQL..."
|
|
sleep 2
|
|
done
|
|
|
|
echo "✓ MySQL está disponible"
|
|
|
|
# Comandos de inicialización para desarrollo
|
|
echo "Ejecutando comandos de inicialización de DESARROLLO..."
|
|
|
|
# Instalar dependencias (incluye dev)
|
|
echo "Instalando dependencias de desarrollo..."
|
|
composer install --optimize-autoloader --no-interaction
|
|
|
|
echo "Ejecutando package:discover..."
|
|
php artisan package:discover --ansi
|
|
|
|
echo "Creando enlaces simbólicos..."
|
|
php artisan storage:link --force || true
|
|
|
|
echo "Ejecutando configuración de desarrollo..."
|
|
composer run env:dev
|
|
|
|
echo "Creando directorios necesarios..."
|
|
mkdir -p storage/app/keys storage/app/public/apk
|
|
|
|
echo "Generando claves de Passport..."
|
|
php artisan passport:keys --force || true
|
|
|
|
# Verificar que las claves se crearon
|
|
if [ ! -f "storage/app/keys/oauth-private.key" ] || [ ! -f "storage/app/keys/oauth-public.key" ]; then
|
|
echo "ERROR: Las claves de Passport no se generaron correctamente"
|
|
echo "Intentando generar manualmente..."
|
|
|
|
# Generar claves manualmente usando OpenSSL
|
|
openssl genrsa -out storage/app/keys/oauth-private.key 4096
|
|
openssl rsa -in storage/app/keys/oauth-private.key -pubout -out storage/app/keys/oauth-public.key
|
|
|
|
echo "✓ Claves generadas manualmente"
|
|
fi
|
|
|
|
# Establecer permisos correctos para las claves
|
|
chmod 600 storage/app/keys/oauth-private.key
|
|
chmod 644 storage/app/keys/oauth-public.key
|
|
chown www-data:www-data storage/app/keys/oauth-*.key
|
|
|
|
echo "✓ Claves de Passport verificadas"
|
|
|
|
# Para desarrollo, siempre verificar migraciones
|
|
echo "=== VERIFICANDO BASE DE DATOS DESARROLLO ==="
|
|
|
|
# Verificar si necesita migraciones
|
|
if php artisan migrate:status | grep -q "Pending"; then
|
|
echo "Ejecutando migraciones pendientes..."
|
|
php artisan migrate --force
|
|
fi
|
|
|
|
# Verificar si la base de datos tiene datos
|
|
USER_COUNT=$(php -r "
|
|
require 'vendor/autoload.php';
|
|
\$app = require 'bootstrap/app.php';
|
|
\$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
|
|
echo \App\Models\User::count();
|
|
")
|
|
|
|
if [ "$USER_COUNT" -eq "0" ]; then
|
|
echo "Base de datos vacía, ejecutando seeders de desarrollo..."
|
|
composer run db:dev
|
|
else
|
|
echo "✓ Base de datos ya tiene datos ($USER_COUNT usuarios)"
|
|
fi
|
|
|
|
echo "✓ Configuración de desarrollo completada"
|
|
|
|
echo "=== Iniciando PHP-FPM DESARROLLO ==="
|
|
|
|
# Iniciar PHP-FPM
|
|
exec "$@"
|