#!/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