chore: clean publish artifacts and add sources
This commit is contained in:
159
install-sqlserver-docker.sh
Executable file
159
install-sqlserver-docker.sh
Executable file
@@ -0,0 +1,159 @@
|
||||
#!/bin/bash
|
||||
|
||||
# SQL Server Docker Installation Script
|
||||
# This is a more reliable method for running SQL Server on Ubuntu 24.04
|
||||
|
||||
set -e
|
||||
|
||||
echo "=================================="
|
||||
echo "SQL Server 2022 Docker Installation"
|
||||
echo "=================================="
|
||||
|
||||
# Check if running as root
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run as root (use sudo)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Install Docker if not already installed
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "Installing Docker..."
|
||||
apt-get update
|
||||
apt-get install -y ca-certificates curl gnupg lsb-release
|
||||
|
||||
# Add Docker's official GPG key
|
||||
install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
|
||||
# Add Docker repository
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
|
||||
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
# Install Docker Engine
|
||||
apt-get update
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
# Start Docker
|
||||
systemctl start docker
|
||||
systemctl enable docker
|
||||
|
||||
echo "✅ Docker installed successfully"
|
||||
else
|
||||
echo "✅ Docker is already installed"
|
||||
fi
|
||||
|
||||
# Set SA password
|
||||
echo ""
|
||||
read -sp "Enter SA password (min 8 chars, uppercase, lowercase, digits, symbols): " SA_PASSWORD
|
||||
echo ""
|
||||
read -sp "Confirm SA password: " SA_PASSWORD_CONFIRM
|
||||
echo ""
|
||||
|
||||
if [ "$SA_PASSWORD" != "$SA_PASSWORD_CONFIRM" ]; then
|
||||
echo "❌ Passwords do not match!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Validate password strength
|
||||
if [ ${#SA_PASSWORD} -lt 8 ]; then
|
||||
echo "❌ Password must be at least 8 characters!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Stop and remove existing container if it exists
|
||||
if [ "$(docker ps -aq -f name=sqlserver)" ]; then
|
||||
echo "Removing existing SQL Server container..."
|
||||
docker stop sqlserver 2>/dev/null || true
|
||||
docker rm sqlserver 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Create data directory
|
||||
mkdir -p /var/opt/mssql/data
|
||||
mkdir -p /var/opt/mssql/log
|
||||
mkdir -p /var/opt/mssql/backup
|
||||
|
||||
# Run SQL Server container
|
||||
echo ""
|
||||
echo "Starting SQL Server 2022 container..."
|
||||
docker run -e "ACCEPT_EULA=Y" \
|
||||
-e "MSSQL_SA_PASSWORD=$SA_PASSWORD" \
|
||||
-e "MSSQL_PID=Express" \
|
||||
-p 1433:1433 \
|
||||
--name sqlserver \
|
||||
--hostname sqlserver \
|
||||
-v /var/opt/mssql/data:/var/opt/mssql/data \
|
||||
-v /var/opt/mssql/log:/var/opt/mssql/log \
|
||||
-v /var/opt/mssql/backup:/var/opt/mssql/backup \
|
||||
--restart unless-stopped \
|
||||
-d \
|
||||
mcr.microsoft.com/mssql/server:2022-latest
|
||||
|
||||
# Wait for SQL Server to start
|
||||
echo ""
|
||||
echo "Waiting for SQL Server to start..."
|
||||
sleep 15
|
||||
|
||||
# Check container status
|
||||
if docker ps | grep -q sqlserver; then
|
||||
echo "✅ SQL Server container is running"
|
||||
else
|
||||
echo "❌ SQL Server container failed to start"
|
||||
echo "Check logs with: docker logs sqlserver"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test connection
|
||||
echo ""
|
||||
echo "Testing connection..."
|
||||
docker exec sqlserver /opt/mssql-tools18/bin/sqlcmd \
|
||||
-S localhost -U sa -P "$SA_PASSWORD" -C \
|
||||
-Q "SELECT @@VERSION" &>/dev/null
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Connection successful!"
|
||||
else
|
||||
echo "⚠️ Connection test failed, but container is running"
|
||||
echo "You may need to wait a bit longer for SQL Server to fully initialize"
|
||||
fi
|
||||
|
||||
# Configure firewall
|
||||
if command -v ufw &> /dev/null; then
|
||||
echo ""
|
||||
echo "Configuring firewall..."
|
||||
ufw allow 1433/tcp
|
||||
echo "✅ Firewall configured"
|
||||
fi
|
||||
|
||||
# Set container to start on boot
|
||||
systemctl enable docker
|
||||
|
||||
echo ""
|
||||
echo "=================================="
|
||||
echo "Installation Complete!"
|
||||
echo "=================================="
|
||||
echo ""
|
||||
echo "SQL Server 2022 is running in Docker"
|
||||
echo ""
|
||||
echo "Connection Information:"
|
||||
echo " Server: localhost,1433"
|
||||
echo " Username: sa"
|
||||
echo " Password: (the one you just set)"
|
||||
echo ""
|
||||
echo "Connection String for appsettings.json:"
|
||||
echo "Server=localhost,1433;Database=SkyArtShopDB;User Id=sa;Password=YOUR_PASSWORD;TrustServerCertificate=True;MultipleActiveResultSets=True"
|
||||
echo ""
|
||||
echo "Useful Docker commands:"
|
||||
echo " docker ps - List running containers"
|
||||
echo " docker logs sqlserver - View SQL Server logs"
|
||||
echo " docker stop sqlserver - Stop SQL Server"
|
||||
echo " docker start sqlserver - Start SQL Server"
|
||||
echo " docker restart sqlserver - Restart SQL Server"
|
||||
echo " docker exec -it sqlserver bash - Access container shell"
|
||||
echo ""
|
||||
echo "Data persistence:"
|
||||
echo " Database files: /var/opt/mssql/data"
|
||||
echo " Log files: /var/opt/mssql/log"
|
||||
echo " Backups: /var/opt/mssql/backup"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user