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
相关推荐
杨浦老苏4 小时前
家庭实验室监控仪表盘HomeLab-Monitor
运维·docker·监控·群晖
开发者联盟league8 小时前
使用k8s安装Sonarqube
云原生·容器·kubernetes
ai产品老杨9 小时前
架构师深剖:基于 Docker 容器化与边缘计算的 AI 视频管理平台——支持 GB28181/RTSP 多协议接入与全源码交付
人工智能·docker·边缘计算
qq_1851986910 小时前
Docker 历史版本
docker
m0_7381207210 小时前
渗透测试基础——基于Docker的Rsync服务靶场搭建与原理讲解
运维·服务器·网络·安全·web安全·docker·容器
杨浦老苏14 小时前
PDF文档管理平台PDFManager
docker·pdf·工具·群晖
ai产品老杨14 小时前
解耦异构安防:基于 Docker 与边缘计算的 AI 视频管理平台,如何实现 GB28181/RTSP 统一接入与全源码交付
人工智能·docker·边缘计算
极客先躯16 小时前
高级java每日一道面试题-2026年02月09日-实战篇[Docker]-Docker 容器有哪些安全风险?如何缓解?
java·运维·网络·安全·docker·容器
yuanzhengme16 小时前
Ollama【部署 07】搭建本地智能体的简单说明(局域网离线部署Ollama+模型迁移+Docker部署AnythingLLM)
运维·docker·容器·大模型·ollama·本地智能体
想要成为计算机高手16 小时前
用meta quest 3 遥操宇树机器人-xr_teleoperate 复现(含docker安装与配置方式)
人工智能·docker·机器人·xr·g1·具身智能