docker快速启动sqlserver实例并自动测试shell脚本

注:自备网络环境

bash 复制代码
#!/bin/bash
# ============================================================
# Docker 一键部署 SQL Server 2022 + 自动测试
# ============================================================

SA_PASSWORD="YourStrong@Passw0rd"
CONTAINER_NAME="sqlserver-test"
PORT=1433
IMAGE="mcr.microsoft.com/mssql/server:2022-latest"

echo "==> [1/4] 拉取 SQL Server 镜像..."
docker pull $IMAGE

echo "==> [2/4] 启动容器..."
docker run -d \
  --name $CONTAINER_NAME \
  -e "ACCEPT_EULA=Y" \
  -e "SA_PASSWORD=$SA_PASSWORD" \
  -e "MSSQL_PID=Developer" \
  -p $PORT:1433 \
  --memory="2g" \
  --restart unless-stopped \
  $IMAGE

echo "==> [3/4] 等待 SQL Server 就绪(最多 60 秒)..."
for i in $(seq 1 12); do
  sleep 5
  STATUS=$(docker exec $CONTAINER_NAME \
    /opt/mssql-tools18/bin/sqlcmd \
    -S localhost -U sa -P "$SA_PASSWORD" \
    -Q "SELECT 1" -No 2>/dev/null)
  if [ $? -eq 0 ]; then
    echo "    SQL Server 已就绪!"
    break
  fi
  echo "    等待中...($((i*5))s)"
done

echo "==> [4/4] 执行基础测试..."
docker exec $CONTAINER_NAME \
  /opt/mssql-tools18/bin/sqlcmd \
  -S localhost -U sa -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 "=============================="

停止并删除实例:

bash 复制代码
docker stop sqlserver-test && docker rm sqlserver-test
相关推荐
Goboy5 分钟前
夯爆了,我被一个一句话接入的免费可观测平台策反了,那一刻我决定放弃用了3年的Prometheus
后端·docker·kubernetes
吴声子夜歌27 分钟前
Kubernetes权威指南——深入掌握Service(一)
云原生·容器·kubernetes
java_logo10 小时前
Docker 部署 Liquibase:轻松搭建数据库变更管理
数据库·docker·容器·数据库管理·liquibase·轩辕镜像·数据库变更
IT利刃出鞘18 小时前
Docker Compose--解决修改配置后不生效的问题
运维·docker·容器
java_logo18 小时前
Docker 部署 CloudBeaver:轻松搭建网页数据库管理平台
数据库·docker·容器·数据库管理·dbeaver·轩辕镜像·cloudbeaver
Lsetea18 小时前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
好用斋19 小时前
拾光坞安装网盘聚合LitePan:把Docker命令翻译成图形界面
运维·docker·容器
对象存储与RustFS20 小时前
Velero 接 RustFS 实操:K8s 集群备份落到自建对象存储
后端·docker·云原生
70后写java的老码农1 天前
docker-compose 部署 Redis Stack Server 6.2.6-v19
redis·docker
.冰块.1 天前
流量大了自动加 Pod!K8s HPA 扩缩容与 ResourceQuota/LimitRange 资源管控实战
linux·云原生·容器·kubernetes·hpa·quota·limitrange