docker快速启动sqlserver实例并自动测试shell脚本
注:自备网络环境
#!/bin/bash# ============================================================# Docker 一键部署 SQL Server 2022 + 自动测试# ============================================================SA_PASSWORD="YourStrong@Passw0rd"CONTAINER_NAME="sqlserver-test"PORT=1433IMAGE="mcr.microsoft.com/mssql/server:2022-latest"echo"==> [1/4] 拉取 SQL Server 镜像..."dockerpull$IMAGEecho"==> [2/4] 启动容器..."dockerrun-d\--name$CONTAINER_NAME\-e"ACCEPT_EULA=Y"\-e"SA_PASSWORD=$SA_PASSWORD"\-e"MSSQL_PID=Developer"\-p$PORT:1433\--memory="2g"\--restartunless-stopped\$IMAGEecho"==> [3/4] 等待 SQL Server 就绪(最多 60 秒)..."foriin$(seq112);dosleep5STATUS=$(dockerexec$CONTAINER_NAME\/opt/mssql-tools18/bin/sqlcmd\-Slocalhost-Usa-P"$SA_PASSWORD"\-Q"SELECT 1"-No2>/dev/null)if[$?-eq0];thenecho" SQL Server 已就绪!"breakfiecho" 等待中...($((i*5))s)"doneecho"==> [4/4] 执行基础测试..."dockerexec$CONTAINER_NAME\/opt/mssql-tools18/bin/sqlcmd\-Slocalhost-Usa-P"$SA_PASSWORD"-No\-Q" -- 建库 CREATE DATABASE TestDB; GO USE TestDB; GO -- 建表 CREATE TABLE Users ( Id INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(100) NOT NULL, Email NVARCHAR(200), CreatedAt DATETIME DEFAULT GETDATE() ); GO -- 插入数据 INSERT INTO Users (Name, Email) VALUES (N'张三', 'zhangsan@example.com'), (N'李四', 'lisi@example.com'), (N'王五', 'wangwu@example.com'); GO -- 查询 SELECT * FROM Users; GO -- 统计 SELECT COUNT(*) AS TotalUsers FROM Users; GO "echo""echo"=============================="echo" 部署完成!连接信息:"echo" 主机: localhost:$PORT"echo" 用户: sa"echo" 密码:$SA_PASSWORD"echo"=============================="停止并删除实例:
dockerstop sqlserver-test&&dockerrmsqlserver-test