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
相关推荐
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS3 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心3 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing3 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
赵文宇(温玉)3 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang3 天前
上传本地镜像到harbor中
docker·容器·持续部署
羑悻的小杀马特3 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe3 天前
docker常见命令
docker
正经教主3 天前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde
忆~遂愿3 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器