academia/deploy/docker-mssql/entrypoint.sh

78 lines
2.7 KiB
Bash
Raw Permalink Normal View History

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