Fix: Solucionados problemas de permisos en Docker y agregada gestion de Webhook de Telegram
This commit is contained in:
100
docker/entrypoint.sh
Normal file
100
docker/entrypoint.sh
Normal file
@@ -0,0 +1,100 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
echo "========================================"
|
||||
echo " Nomina Ventas - Entrypoint"
|
||||
echo "========================================"
|
||||
|
||||
# Verificar que el código existe en /var/www/html
|
||||
if [ ! -f /var/www/html/artisan ]; then
|
||||
echo "ERROR: No se encontró el código en /var/www/html"
|
||||
echo "Montando volumen con el código..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Asegurar que existan los directorios necesarios (importante para volúmenes montados)
|
||||
mkdir -p /var/www/html/storage/framework/{cache,sessions,views}
|
||||
mkdir -p /var/www/html/storage/logs
|
||||
mkdir -p /var/www/html/bootstrap/cache
|
||||
|
||||
# Asegurar permisos
|
||||
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
|
||||
|
||||
# ===== GENERAR O ACTUALIZAR .env =====
|
||||
echo "Intentando sincronizar .env desde variables de Docker..."
|
||||
|
||||
# Generamos el contenido en un archivo temporal
|
||||
cat > /tmp/.env.tmp << EOF
|
||||
APP_NAME="${APP_NAME:-Laravel}"
|
||||
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}
|
||||
LOG_CHANNEL=${LOG_CHANNEL:-stack}
|
||||
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:-file}
|
||||
SESSION_LIFETIME=${SESSION_LIFETIME:-120}
|
||||
SESSION_ENCRYPT=${SESSION_ENCRYPT:-false}
|
||||
SESSION_PATH=${SESSION_PATH:-/}
|
||||
SESSION_DOMAIN=${SESSION_DOMAIN:-null}
|
||||
BROADCAST_CONNECTION=${BROADCAST_CONNECTION:-log}
|
||||
FILESYSTEM_DISK=${FILESYSTEM_DISK:-local}
|
||||
QUEUE_CONNECTION=${QUEUE_CONNECTION:-sync}
|
||||
CACHE_STORE=${CACHE_STORE:-database}
|
||||
TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
|
||||
TELEGRAM_WEBHOOK_URL=${TELEGRAM_WEBHOOK_URL}
|
||||
BCRYPT_ROUNDS=${BCRYPT_ROUNDS:-12}
|
||||
EOF
|
||||
|
||||
# Intentar mover el temporal al destino final
|
||||
if cp /tmp/.env.tmp /var/www/html/.env 2>/dev/null; then
|
||||
# Si pudimos copiarlo, aplicamos permisos
|
||||
chown laravel:laravel /var/www/html/.env
|
||||
chmod 640 /var/www/html/.env
|
||||
|
||||
# Generar APP_KEY si falta (solo si es escribible)
|
||||
if [ -z "$APP_KEY" ] || [ "$APP_KEY" == "" ]; then
|
||||
echo "APP_KEY no detectada, generando una nueva..."
|
||||
NEW_KEY=$(php /var/www/html/artisan key:generate --show --no-ansi)
|
||||
sed -i "s|APP_KEY=|APP_KEY=$NEW_KEY|g" /var/www/html/.env
|
||||
export APP_KEY=$NEW_KEY
|
||||
fi
|
||||
echo "✅ Archivo .env sincronizado correctamente."
|
||||
else
|
||||
echo "⚠️ ADVERTENCIA: No se pudo escribir en /var/www/html/.env"
|
||||
echo "ℹ️ Probablemente esté montado como volumen de solo lectura (:ro)."
|
||||
echo "ℹ️ Se usarán los valores del archivo montado externamente."
|
||||
fi
|
||||
rm -f /tmp/.env.tmp
|
||||
|
||||
# ===== LIMPIAR CACHE =====
|
||||
echo ">> Limpiando cache..."
|
||||
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
|
||||
|
||||
echo ">> Cacheando configuración..."
|
||||
php /var/www/html/artisan config:cache 2>&1 || true
|
||||
|
||||
# ===== VERIFICAR =====
|
||||
php /var/www/html/artisan about 2>&1 | head -10 || true
|
||||
|
||||
echo "========================================"
|
||||
echo " Iniciando servicios..."
|
||||
echo "========================================"
|
||||
|
||||
php-fpm &
|
||||
nginx -g "daemon off;"
|
||||
@@ -1,6 +1,6 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
server_name _;
|
||||
root /var/www/html/public;
|
||||
index index.php index.html;
|
||||
|
||||
@@ -24,7 +24,7 @@ server {
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass app:9000;
|
||||
fastcgi_pass 127.0.0.1:9000;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
|
||||
Reference in New Issue
Block a user