107 lines
3.2 KiB
Bash
107 lines
3.2 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
echo "=== Iniciando entrypoint PRODUCCIÓN ==="
|
|
|
|
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"
|
|
|
|
echo "Ejecutando comandos de inicialización de PRODUCCIÓN..."
|
|
|
|
# Instalar dependencias sin paquetes de desarrollo
|
|
echo "Instalando dependencias de producción..."
|
|
composer install --no-dev --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 producción..."
|
|
composer run env:prod
|
|
|
|
# Cachear configuración, rutas y vistas para máximo rendimiento
|
|
echo "Generando caché de configuración..."
|
|
php artisan config:cache
|
|
|
|
echo "Generando caché de rutas..."
|
|
php artisan route:cache
|
|
|
|
echo "Generando caché de vistas..."
|
|
php artisan view:cache
|
|
|
|
echo "Generando caché de eventos..."
|
|
php artisan event:cache
|
|
|
|
echo "Creando directorios necesarios..."
|
|
mkdir -p storage/app/keys storage/app/public/apk
|
|
|
|
if [ ! -f "storage/app/keys/oauth-private.key" ] || [ ! -f "storage/app/keys/oauth-public.key" ]; then
|
|
echo "Claves de Passport no encontradas, generando..."
|
|
php artisan passport:keys || {
|
|
echo "Artisan falló, generando con 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 de Passport generadas"
|
|
else
|
|
echo "✓ Claves de Passport ya existen, omitiendo generación"
|
|
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"
|
|
|
|
echo "=== VERIFICANDO BASE DE DATOS PRODUCCIÓN ==="
|
|
|
|
echo "Ejecutando migraciones pendientes..."
|
|
php artisan migrate --force
|
|
|
|
echo "✓ Configuración de producción completada"
|
|
|
|
echo "=== Iniciando PHP-FPM PRODUCCIÓN ==="
|
|
|
|
# Iniciar PHP-FPM
|
|
exec "$@"
|