add: full multi-tenancy control
This commit is contained in:
105
docker-entrypoint.sh
Normal file
105
docker-entrypoint.sh
Normal file
@@ -0,0 +1,105 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user