首页
/ fullstackhero/dotnet-starter-kit 项目中的 MSSQL Docker 部署指南

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 文件定义了两个主要服务:

  1. dotnet-webapi - 基于 .NET 的 Web API 服务
  2. 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

关键点说明:

  1. 镜像选择:使用官方 Microsoft SQL Server 最新版镜像
  2. 环境变量
    • SA_PASSWORD 设置管理员密码(注意密码复杂度要求)
    • ACCEPT_EULA 自动接受最终用户许可协议
  3. 数据持久化:通过命名卷 mssql-data 持久化数据库文件
  4. 健康检查:定期执行 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

关键点说明:

  1. 连接字符串:配置了主数据库和 Hangfire 后台任务存储的连接
  2. 服务依赖:确保 MSSQL 服务健康后才启动 Web API
  3. 网络通信:通过服务名 mssql 在 Docker 网络内访问数据库

部署实践指南

1. 准备工作

确保已安装:

  • Docker 引擎
  • Docker Compose

2. 启动服务

执行以下命令启动所有服务:

docker-compose -f docker-compose.mssql.yml up -d

3. 验证服务

检查服务状态:

docker-compose ps

4. 数据备份与恢复

由于使用了命名卷 mssql-data,数据库数据会持久化存储。如需备份,可以:

  1. 停止服务
  2. 备份卷数据
  3. 需要时恢复

安全注意事项

  1. 密码安全:生产环境中不应使用示例中的简单密码
  2. 加密连接:示例中禁用了加密(Encrypt=false),生产环境应启用
  3. 证书管理:Web API 使用了自签名证书,生产环境应替换为正式证书

性能优化建议

  1. 资源限制:为 MSSQL 容器添加 CPU 和内存限制
  2. 连接池:调整 Web API 中的数据库连接池大小
  3. 索引优化:根据实际查询模式优化数据库索引

常见问题解决

Q: MSSQL 服务启动失败怎么办? A: 检查日志 docker logs mssql,常见问题包括:

  • 密码不符合复杂度要求
  • 端口冲突
  • 磁盘空间不足

Q: Web API 无法连接数据库怎么办? A: 验证:

  1. MSSQL 服务是否健康
  2. 连接字符串是否正确
  3. 网络配置是否正常

总结

本文详细解析了 fullstackhero/dotnet-starter-kit 项目中 MSSQL 的 Docker 部署配置,提供了从基础理解到实践部署的完整指南。通过 Docker Compose 可以轻松搭建开发环境,但生产部署时需考虑更多安全性和性能因素。