5.5 KiB
5.5 KiB
SQL Server 2022 Linux Docker Compose 部署指南
概述
这是一个完整的SQL Server 2022 Linux Docker Compose部署方案,包含数据库初始化、用户管理、性能优化等配置。
文件结构
├── docker-compose-sqlserver.yml # Docker Compose 配置文件
├── sqlserver.env # 环境变量配置文件
├── sqlserver/ # SQL Server 相关目录
│ ├── init/ # 初始化脚本目录
│ │ ├── 01-create-database.sql # 创建数据库和表
│ │ ├── 02-create-user.sql # 创建用户和权限
│ │ └── 03-performance-config.sql # 性能优化配置
│ ├── data/ # 数据文件目录
│ ├── logs/ # 日志文件目录
│ ├── backup/ # 备份文件目录
│ └── web-config/ # Web管理界面配置
└── SQLServer-README.md # 本说明文档
快速开始
1. 配置环境变量
复制并修改环境变量文件:
cp sqlserver.env .env
编辑 .env 文件,修改以下关键配置:
# 修改SA密码(必须)
SQLSERVER_SA_PASSWORD=YourStrong@Password123!
# 修改端口(可选,避免冲突)
SQLSERVER_PORT=1433
# 选择SQL Server版本
SQLSERVER_EDITION=Developer # 免费开发版本
2. 启动服务
# 启动SQL Server
docker-compose -f docker-compose-sqlserver.yml --env-file .env up -d
# 查看服务状态
docker-compose -f docker-compose-sqlserver.yml ps
# 查看日志
docker-compose -f docker-compose-sqlserver.yml logs -f sqlserver
3. 连接数据库
使用 sqlcmd 连接
# 进入容器
docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!'
# 或者直接执行SQL
docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!' -Q "SELECT name FROM sys.databases"
使用外部工具连接
- 服务器:
localhost或你的服务器IP - 端口:
1433(或你在.env中配置的端口) - 用户名:
sa - 密码: 你在.env中配置的密码
- 数据库:
SampleDB(初始化脚本创建的示例数据库)
配置说明
SQL Server 版本选择
在 sqlserver.env 中配置 SQLSERVER_EDITION:
Developer: 免费开发版本(推荐用于开发环境)Express: 免费轻量版本Standard: 标准版Enterprise: 企业版
资源限制
默认配置:
- CPU限制: 4核心
- 内存限制: 8GB
- 数据目录:
./sqlserver/data - 日志目录:
./sqlserver/logs
网络配置
- 默认端口: 1433
- 网络子网: 172.24.0.0/16
- 容器间通信: 通过
sqlserver-net网络
初始化脚本说明
01-create-database.sql
- 创建
SampleDB示例数据库 - 创建
Users示例表 - 插入示例数据
- 创建
GetActiveUsers存储过程
02-create-user.sql
- 创建
appuser应用程序用户 - 配置用户权限
- 授予必要的数据库权限
03-performance-config.sql
- 配置最大内存使用量
- 设置最大并行度
- 启用查询存储
- 创建性能监控视图
常用操作
备份数据库
# 创建备份
docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!' -Q "BACKUP DATABASE SampleDB TO DISK = '/var/opt/mssql/backup/SampleDB.bak'"
恢复数据库
# 恢复备份
docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!' -Q "RESTORE DATABASE SampleDB FROM DISK = '/var/opt/mssql/backup/SampleDB.bak'"
查看性能统计
# 查看性能统计
docker exec -it sqlserver-2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Password123!' -d SampleDB -Q "SELECT * FROM PerformanceStats"
停止和清理
# 停止服务
docker-compose -f docker-compose-sqlserver.yml down
# 停止并删除数据卷(谨慎使用)
docker-compose -f docker-compose-sqlserver.yml down -v
故障排除
常见问题
-
容器启动失败
- 检查密码是否符合复杂度要求
- 确保端口没有被占用
- 查看容器日志:
docker-compose logs sqlserver
-
连接失败
- 确认防火墙设置
- 检查网络配置
- 验证用户名和密码
-
性能问题
- 调整内存限制
- 检查磁盘空间
- 查看性能监控视图
日志查看
# 查看SQL Server日志
docker-compose -f docker-compose-sqlserver.yml logs sqlserver
# 查看系统日志
docker exec -it sqlserver-2022 cat /var/opt/mssql/log/errorlog
安全建议
- 修改默认密码: 使用强密码
- 限制网络访问: 配置防火墙规则
- 定期备份: 设置自动备份策略
- 监控访问: 启用审计日志
- 更新补丁: 定期更新SQL Server镜像
扩展功能
添加更多数据库
在 sqlserver/init/ 目录下创建新的 .sql 文件,它们将按文件名顺序执行。
集成其他服务
可以将此SQL Server配置集成到现有的Docker Compose网络中:
networks:
- your-existing-network
许可证
SQL Server 2022 Developer Edition 可免费用于开发和测试环境。生产环境请确保使用适当的许可证。
支持
如有问题,请查看: