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
相关推荐
猫吃了源码9 小时前
CentOS7使用Kubeadm安装部署K8s(Kubernetes)最新稳定版本1.26.x
云原生·容器·kubernetes
倔强的石头10610 小时前
飞牛OS部署Mtab:Docker搭建自托管书签导航并实现远程访问
运维·docker·容器
张忠琳10 小时前
【k3s】AutoK3s v0.9.3 —— Part 7 辅助模块超深度逐行分析
云原生·容器·kubernetes·k3s·autok3s
张忠琳19 小时前
【k3s】AutoK3s v0.9.3 Part 1 入口与 CLI 命令模块 — 超深度逐行分析之三
云原生·容器·kubernetes·k3s·autok3s
哥本哈士奇1 天前
dbt+SQLServer构建数据仓库(10):macro 以及 data vault的应用实例
大数据·数据仓库·sqlserver
apgk11 天前
基于Canal实现mysql数据同步到消息队列(RabbitMQ/Kafka)详细操作教程
docker·kafka·rabbitmq
fatcoder1 天前
玩转Docker 06 — 容器网络
前端·后端·docker
xiaoxiangsiyan1 天前
企业日常运维高频应用服务全解
运维·网络·云原生·容器·dns
AR_xsy1 天前
docker--资源配额 配置
运维·docker·容器
国际云,接待1 天前
Docker 容器突然退出、服务莫名重启:从 OOMKilled 到内存泄漏的生产排查手册
运维·docker·容器