fullstackhero/dotnet-starter-kit 项目中的 MSSQL Docker 部署指南
2025-07-08 00:43:13作者:平淮齐Percy
项目概述
fullstackhero/dotnet-starter-kit 是一个基于 .NET 的全栈开发启动套件,提供了快速构建现代 Web 应用程序的基础设施。本文重点介绍该项目中使用 Docker Compose 部署 Microsoft SQL Server (MSSQL) 数据库的配置方案。
Docker Compose 文件解析
整体架构
该 Docker Compose 文件定义了两个主要服务:
dotnet-webapi
- 基于 .NET 的 Web API 服务mssql
- Microsoft SQL Server 数据库服务
这两个服务通过名为 fullstackhero
的自定义网络进行通信。
MSSQL 服务配置
MSSQL 服务配置了以下关键参数:
mssql:
image: mcr.microsoft.com/mssql/server:latest
environment:
- SA_PASSWORD=123Pa$$word!
- ACCEPT_EULA=Y
volumes:
- mssql-data:/data/db
healthcheck:
test: /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$$SA_PASSWORD" -Q "SELECT 1" || exit 1
关键点说明:
- 镜像选择:使用官方 Microsoft SQL Server 最新版镜像
- 环境变量:
SA_PASSWORD
设置管理员密码(注意密码复杂度要求)ACCEPT_EULA
自动接受最终用户许可协议
- 数据持久化:通过命名卷
mssql-data
持久化数据库文件 - 健康检查:定期执行 SQL 查询验证服务可用性
Web API 服务配置
Web API 服务配置了与 MSSQL 的集成:
dotnet-webapi:
environment:
- DatabaseSettings__ConnectionString=Server=mssql;Database=fshdb;User=sa;Password=123Pa$$word!;MultipleActiveResultSets=true;Encrypt=false
- HangfireSettings__Storage__ConnectionString=Server=mssql;Database=fshdb;User=sa;Password=123Pa$$word!;MultipleActiveResultSets=true;Encrypt=false
- DatabaseSettings__DBProvider=mssql
- HangfireSettings__Storage__StorageProvider=mssql
depends_on:
mssql:
condition: service_healthy
关键点说明:
- 连接字符串:配置了主数据库和 Hangfire 后台任务存储的连接
- 服务依赖:确保 MSSQL 服务健康后才启动 Web API
- 网络通信:通过服务名
mssql
在 Docker 网络内访问数据库
部署实践指南
1. 准备工作
确保已安装:
- Docker 引擎
- Docker Compose
2. 启动服务
执行以下命令启动所有服务:
docker-compose -f docker-compose.mssql.yml up -d
3. 验证服务
检查服务状态:
docker-compose ps
4. 数据备份与恢复
由于使用了命名卷 mssql-data
,数据库数据会持久化存储。如需备份,可以:
- 停止服务
- 备份卷数据
- 需要时恢复
安全注意事项
- 密码安全:生产环境中不应使用示例中的简单密码
- 加密连接:示例中禁用了加密(
Encrypt=false
),生产环境应启用 - 证书管理:Web API 使用了自签名证书,生产环境应替换为正式证书
性能优化建议
- 资源限制:为 MSSQL 容器添加 CPU 和内存限制
- 连接池:调整 Web API 中的数据库连接池大小
- 索引优化:根据实际查询模式优化数据库索引
常见问题解决
Q: MSSQL 服务启动失败怎么办?
A: 检查日志 docker logs mssql
,常见问题包括:
- 密码不符合复杂度要求
- 端口冲突
- 磁盘空间不足
Q: Web API 无法连接数据库怎么办? A: 验证:
- MSSQL 服务是否健康
- 连接字符串是否正确
- 网络配置是否正常
总结
本文详细解析了 fullstackhero/dotnet-starter-kit 项目中 MSSQL 的 Docker 部署配置,提供了从基础理解到实践部署的完整指南。通过 Docker Compose 可以轻松搭建开发环境,但生产部署时需考虑更多安全性和性能因素。