106 lines
3.2 KiB
Bash
106 lines
3.2 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
echo "🚀 Iniciando Container v21 (Smart Seed + Key Fix)..."
|
|
|
|
# 1. PERMISSÕES
|
|
mkdir -p storage/framework/sessions
|
|
mkdir -p storage/framework/views
|
|
mkdir -p storage/framework/cache
|
|
mkdir -p bootstrap/cache
|
|
chown -R www-data:www-data storage bootstrap/cache
|
|
chmod -R 775 storage
|
|
|
|
# 2. AGUARDAR BANCO
|
|
DB_HOST=${DB_HOST:-mysql}
|
|
DB_PORT=${DB_PORT:-3306}
|
|
|
|
echo "⏳ Aguardando Banco ($DB_HOST:$DB_PORT)..."
|
|
while ! nc -z $DB_HOST $DB_PORT; do
|
|
echo "zzZ... Banco indisponível. Tentando em 3s..."
|
|
sleep 3
|
|
done
|
|
echo "✅ Banco OK!"
|
|
|
|
# 3. PREPARAR .ENV E KEY
|
|
if [ ! -f .env ]; then
|
|
echo "⚠️ .env não encontrado. Criando a partir do exemplo..."
|
|
cp .env.example .env
|
|
echo "🔑 Gerando APP_KEY pela primeira vez..."
|
|
php artisan key:generate --force
|
|
fi
|
|
|
|
# Verificação de Segurança da Key
|
|
if grep -q "APP_KEY=$" .env || grep -q "APP_KEY=\s*$" .env; then
|
|
echo "⚠️ APP_KEY encontrada vazia! Gerando nova chave..."
|
|
php artisan key:generate --force
|
|
fi
|
|
|
|
# 4. CONFIGURAÇÃO DINÂMICA
|
|
echo "🇧🇷 Aplicando Configurações..."
|
|
|
|
# URL
|
|
if [ ! -z "$APP_URL" ]; then
|
|
sed -i '/APP_URL=/d' .env
|
|
echo "APP_URL=$APP_URL" >> .env
|
|
fi
|
|
|
|
# Locale e Timezone
|
|
sed -i 's/APP_LOCALE=en/APP_LOCALE=pt_BR/g' .env
|
|
sed -i 's/APP_CURRENCY=USD/APP_CURRENCY=BRL/g' .env
|
|
sed -i 's/APP_TIMEZONE=UTC/APP_TIMEZONE=America\/Sao_Paulo/g' .env
|
|
sed -i 's/APP_TIMEZONE=Asia\/Kolkata/APP_TIMEZONE=America\/Sao_Paulo/g' .env
|
|
|
|
# Infra
|
|
sed -i 's/DB_HOST=127.0.0.1/DB_HOST=mysql/g' .env
|
|
sed -i 's/REDIS_HOST=127.0.0.1/REDIS_HOST=redis/g' .env
|
|
sed -i 's/MEMCACHED_HOST=127.0.0.1/MEMCACHED_HOST=memcached/g' .env
|
|
|
|
# Segurança Session
|
|
sed -i '/SESSION_SECURE_COOKIE/d' .env
|
|
sed -i '/SESSION_SAME_SITE/d' .env
|
|
|
|
if [ "$APP_ENV" = "local" ]; then
|
|
echo "SESSION_SECURE_COOKIE=false" >> .env
|
|
else
|
|
echo "SESSION_SECURE_COOKIE=true" >> .env
|
|
fi
|
|
|
|
echo "SESSION_SAME_SITE=lax" >> .env
|
|
echo "SESSION_COOKIE=growup_session" >> .env
|
|
echo "SESSION_DOMAIN=" >> .env
|
|
|
|
# 5. LIMPEZA DE CACHE
|
|
echo "🔥 Limpando caches..."
|
|
rm -f bootstrap/cache/config.php
|
|
rm -f bootstrap/cache/packages.php
|
|
rm -f bootstrap/cache/services.php
|
|
php artisan optimize:clear
|
|
|
|
# 6. BANCO E SEED INTELIGENTE (A MUDANÇA ESTÁ AQUI)
|
|
echo "📦 Verificando Banco de Dados..."
|
|
php artisan migrate --force
|
|
|
|
echo "🧐 Verificando existência de usuários..."
|
|
# Executa um script PHP rápido para contar usuários na tabela real
|
|
USER_COUNT=$(php -r "require __DIR__ . '/vendor/autoload.php'; \$app = require_once __DIR__ . '/bootstrap/app.php'; \$kernel = \$app->make(Illuminate\Contracts\Console\Kernel::class); \$kernel->bootstrap(); try { echo \Illuminate\Support\Facades\DB::table('users')->count(); } catch (\Exception \$e) { echo 0; }")
|
|
|
|
echo "📊 Usuários encontrados: $USER_COUNT"
|
|
|
|
if [ "$USER_COUNT" -eq "0" ]; then
|
|
echo "🌱 Tabela de usuários vazia. Rodando SEED OBRIGATÓRIO..."
|
|
php artisan db:seed --force
|
|
echo "✅ Seed concluído! Usuário padrão criado."
|
|
else
|
|
echo "⏩ Já existem usuários no banco ($USER_COUNT). Pulando Seed para evitar duplicidade."
|
|
fi
|
|
|
|
# 7. OTIMIZAÇÃO FINAL
|
|
echo "⚡ Otimizando..."
|
|
php artisan optimize
|
|
php artisan view:cache
|
|
php artisan route:cache
|
|
|
|
echo "🏁 Iniciando Apache..."
|
|
exec apache2-foreground
|