All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 3m59s
Ensures that essential configuration (locale, timezone, etc.) is populated in the database on container startup. This prevents the application from crashing (showing 500 error page) when the core_config table is empty.
110 lines
3.7 KiB
Bash
110 lines
3.7 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
|
|
|
|
# Garantir Configuração Core (Evita erro 500)
|
|
echo "⚙️ Configurando core_config..."
|
|
php artisan tinker --execute="try{DB::table('core_config')->insertOrIgnore([['code'=>'general.general.locale_settings.locale','value'=>'pt_BR'],['code'=>'general.general.locale_settings.timezone','value'=>'America/Sao_Paulo'],['code'=>'general.general.locale_settings.weight_unit','value'=>'kg'],['code'=>'general.content.footer.footer_content','value'=>'Powered by Growup']]);}catch(\Exception \$e){}"
|
|
|
|
# 7. OTIMIZAÇÃO FINAL
|
|
echo "⚡ Otimizando..."
|
|
php artisan optimize
|
|
php artisan view:cache
|
|
php artisan route:cache
|
|
|
|
echo "🏁 Iniciando Apache..."
|
|
exec apache2-foreground
|