78 lines
2.7 KiB
Bash
Executable File
78 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# =============================================================================
|
|
# SQL Server 2017 Express - Low RAM Edition
|
|
# Entrypoint que inicia SQL Server y aplica optimizaciones automáticamente
|
|
# =============================================================================
|
|
|
|
set -e
|
|
|
|
# Colores para output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
log_info() { echo -e "${GREEN}[LOWRAM]${NC} $1"; }
|
|
log_warn() { echo -e "${YELLOW}[LOWRAM]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[LOWRAM]${NC} $1"; }
|
|
|
|
# Validar que se proporcionó contraseña
|
|
if [ -z "$MSSQL_SA_PASSWORD" ]; then
|
|
log_error "ERROR: Variable MSSQL_SA_PASSWORD es requerida"
|
|
log_error ""
|
|
log_error "Uso correcto:"
|
|
log_error " docker run -e MSSQL_SA_PASSWORD=TuPassword123! ..."
|
|
log_error ""
|
|
log_error "Requisitos del password:"
|
|
log_error " - Mínimo 8 caracteres"
|
|
log_error " - Al menos una mayúscula"
|
|
log_error " - Al menos una minúscula"
|
|
log_error " - Al menos un número"
|
|
log_error " - Al menos un caracter especial (!@#\$%^&*)"
|
|
exit 1
|
|
fi
|
|
|
|
# Función para aplicar optimizaciones
|
|
apply_optimizations() {
|
|
log_info "Esperando que SQL Server esté listo..."
|
|
|
|
for i in {1..60}; do
|
|
if /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$MSSQL_SA_PASSWORD" \
|
|
-Q "SELECT 1" &>/dev/null; then
|
|
log_info "SQL Server listo - Aplicando optimizaciones..."
|
|
|
|
if /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$MSSQL_SA_PASSWORD" \
|
|
-i /opt/mssql/bin/optimize.sql 2>/dev/null; then
|
|
log_info "============================================="
|
|
log_info "SQL Server Low RAM Edition - LISTO"
|
|
log_info "============================================="
|
|
log_info "Conexión: localhost,1433"
|
|
log_info "Usuario: sa"
|
|
log_info "RAM: ~380MB (optimizado)"
|
|
log_info "============================================="
|
|
else
|
|
log_warn "Optimizaciones parcialmente aplicadas"
|
|
fi
|
|
return 0
|
|
fi
|
|
sleep 2
|
|
done
|
|
|
|
log_warn "Timeout esperando SQL Server - optimizaciones no aplicadas"
|
|
return 1
|
|
}
|
|
|
|
# Mostrar configuración
|
|
log_info "============================================="
|
|
log_info "SQL Server 2017 Express - Low RAM Edition"
|
|
log_info "============================================="
|
|
log_info "Edición: ${MSSQL_PID:-Express}"
|
|
log_info "Memoria límite: ${MSSQL_MEMORY_LIMIT_MB:-340} MB"
|
|
log_info "============================================="
|
|
|
|
# Aplicar optimizaciones en background después de que SQL Server inicie
|
|
apply_optimizations &
|
|
|
|
# Iniciar SQL Server (foreground)
|
|
exec /opt/mssql/bin/sqlservr
|