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