- Se corrigen permisos del .env para el usuario laravel (664). - Se mejora la robustez de key:generate usando su -s /bin/bash -c como usuario laravel. - Se asegura que APP_KEY se capture y guarde correctamente usando @ como delimitador en sed. - Limpieza general del entrypoint y mejora de logs.
129 lines
4.2 KiB
Bash
129 lines
4.2 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
echo "========================================"
|
|
echo " Nomina Ventas - Entrypoint"
|
|
echo "========================================"
|
|
|
|
if [ ! -f /var/www/html/artisan ]; then
|
|
echo "ERROR: No se encontró el código en /var/www/html"
|
|
exit 1
|
|
fi
|
|
|
|
echo "========================================"
|
|
echo " Preparando directorios..."
|
|
echo "========================================"
|
|
|
|
mkdir -p /var/www/html/storage/framework/{cache,sessions,views}
|
|
mkdir -p /var/www/html/storage/logs
|
|
mkdir -p /var/www/html/bootstrap/cache
|
|
|
|
chown -R laravel:laravel /var/www/html/storage
|
|
chown -R laravel:laravel /var/www/html/bootstrap/cache
|
|
chmod -R 775 /var/www/html/storage
|
|
chmod -R 775 /var/www/html/bootstrap/cache
|
|
|
|
# NO cambiar permisos de /var/www/html completo - rompe vendor/
|
|
|
|
echo "========================================"
|
|
echo " Generando archivo .env desde variables de Docker..."
|
|
echo "========================================"
|
|
|
|
TEMP_ENV="/tmp/.env.docker"
|
|
ENV_FILE="/var/www/html/.env"
|
|
|
|
# Eliminar .env existente si existe
|
|
rm -f "$ENV_FILE" 2>/dev/null || true
|
|
|
|
# Construir el archivo .env (Incluimos APP_KEY si ya viene en el entorno)
|
|
cat > "$TEMP_ENV" << ENVEOF
|
|
APP_NAME="${APP_NAME:-Nomina Ventas}"
|
|
APP_ENV="${APP_ENV:-production}"
|
|
APP_KEY="${APP_KEY}"
|
|
APP_DEBUG="${APP_DEBUG:-false}"
|
|
APP_URL="${APP_URL:-http://localhost}"
|
|
APP_LOCALE="${APP_LOCALE:-es}"
|
|
APP_FALLBACK_LOCALE="${APP_FALLBACK_LOCALE:-es}"
|
|
APP_FAKER_LOCALE="${APP_FAKER_LOCALE:-es_MX}"
|
|
APP_MAINTENANCE_DRIVER="${APP_MAINTENANCE_DRIVER:-file}"
|
|
BCRYPT_ROUNDS="${BCRYPT_ROUNDS:-12}"
|
|
LOG_CHANNEL="${LOG_CHANNEL:-stack}"
|
|
LOG_STACK=single
|
|
LOG_DEPRECATIONS_CHANNEL=null
|
|
LOG_LEVEL="${LOG_LEVEL:-debug}"
|
|
DB_CONNECTION="${DB_CONNECTION:-mysql}"
|
|
DB_HOST="${DB_HOST:-127.0.0.1}"
|
|
DB_PORT="${DB_PORT:-3306}"
|
|
DB_DATABASE="${DB_DATABASE:-laravel}"
|
|
DB_USERNAME="${DB_USERNAME:-root}"
|
|
DB_PASSWORD="${DB_PASSWORD}"
|
|
SESSION_DRIVER="${SESSION_DRIVER:-database}"
|
|
SESSION_LIFETIME="${SESSION_LIFETIME:-120}"
|
|
SESSION_ENCRYPT="${SESSION_ENCRYPT:-true}"
|
|
SESSION_PATH="${SESSION_PATH:-/}"
|
|
SESSION_DOMAIN="${SESSION_DOMAIN}"
|
|
BROADCAST_CONNECTION="${BROADCAST_CONNECTION:-log}"
|
|
FILESYSTEM_DISK="${FILESYSTEM_DISK:-local}"
|
|
QUEUE_CONNECTION="${QUEUE_CONNECTION:-database}"
|
|
CACHE_STORE="${CACHE_STORE:-database}"
|
|
VITE_APP_NAME="\${APP_NAME}"
|
|
TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN}"
|
|
TELEGRAM_WEBHOOK_URL="${TELEGRAM_WEBHOOK_URL}"
|
|
RUN_MIGRATIONS="${RUN_MIGRATIONS:-false}"
|
|
ENVEOF
|
|
|
|
# Copiar al destino y asegurar que el usuario laravel pueda leerlo
|
|
cp "$TEMP_ENV" "$ENV_FILE"
|
|
chown laravel:laravel "$ENV_FILE"
|
|
chmod 664 "$ENV_FILE"
|
|
|
|
echo ">>> .env generado"
|
|
|
|
echo "========================================"
|
|
echo " Verificando APP_KEY..."
|
|
echo "========================================"
|
|
|
|
APP_KEY_VALUE=$(grep "^APP_KEY=" "$ENV_FILE" | cut -d'=' -f2- | tr -d '"')
|
|
if [ -z "$APP_KEY_VALUE" ]; then
|
|
echo ">>> Generando APP_KEY..."
|
|
# Ejecutar como usuario laravel para evitar problemas de permisos
|
|
NEW_KEY=$(su -s /bin/bash -c "php /var/www/html/artisan key:generate --show --no-ansi" laravel)
|
|
|
|
if [ -n "$NEW_KEY" ]; then
|
|
# Usar @ como delimitador en sed por si la llave contiene slashes
|
|
sed -i "s@^APP_KEY=.*@APP_KEY=$NEW_KEY@" "$ENV_FILE"
|
|
echo ">>> APP_KEY generado y guardado."
|
|
else
|
|
echo ">>> ERROR: No se pudo generar APP_KEY"
|
|
fi
|
|
else
|
|
echo ">>> APP_KEY detectada en el entorno/archivo."
|
|
fi
|
|
|
|
echo ""
|
|
echo ">>> Contenido del .env (primeras líneas):"
|
|
head -8 "$ENV_FILE"
|
|
echo ""
|
|
|
|
echo "========================================"
|
|
echo " Limpiando cache..."
|
|
echo "========================================"
|
|
php /var/www/html/artisan view:clear 2>/dev/null || true
|
|
php /var/www/html/artisan config:clear 2>/dev/null || true
|
|
php /var/www/html/artisan cache:clear 2>/dev/null || true
|
|
php /var/www/html/artisan route:clear 2>/dev/null || true
|
|
php /var/www/html/artisan clear:compiled 2>/dev/null || true
|
|
|
|
echo "========================================"
|
|
echo " Estado de la aplicación"
|
|
echo "========================================"
|
|
php /var/www/html/artisan about 2>&1 | head -15 || true
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo " Iniciando servicios..."
|
|
echo "========================================"
|
|
|
|
php-fpm-wrapper &
|
|
nginx -g "daemon off;" |