8.3 KiB
8.3 KiB
🚀 PetWash API Docker 部署配置完成总结
✅ 已完成的配置
1. 项目配置更新
添加 MySQL 支持
- ✅ 安装
Pomelo.EntityFrameworkCore.MySql8.0.2 - ✅ 更新
Program.cs支持数据库提供程序切换 - ✅ 配置 SQLite(开发)和 MySQL(生产)双模式
配置文件
- ✅
appsettings.json- 包含 SQLite 和 MySQL 连接字符串 - ✅
appsettings.Production.json- 生产环境配置 - ✅ 数据库提供程序自动切换逻辑
2. Docker 配置
核心文件
- ✅
Dockerfile- 多阶段构建,优化镜像大小 - ✅
docker-compose.yml- 容器编排配置 - ✅
.dockerignore- 排除不必要的文件
特性
- 使用 .NET 8.0 官方镜像
- 多阶段构建(SDK → Runtime)
- 自动数据库迁移
- 健康检查配置
- 网络隔离
3. 数据库配置
初始化脚本
- ✅
init-database.sql- 创建数据库和表结构 - ✅ 包含初始套餐数据
- ✅ 创建必要的索引
连接信息
服务器: 101.132.182.216
端口: 3306
数据库: petwash
用户: root
密码: (空)
字符集: utf8mb4
4. 部署脚本
自动化脚本
- ✅
deploy.ps1- Windows PowerShell 部署脚本 - ✅
deploy.sh- Linux/macOS Bash 部署脚本 - ✅
verify-config.ps1- 配置验证脚本 - ✅
check-mysql-connection.sh- MySQL 连接测试
功能
- 自动停止旧容器
- 构建新镜像
- 启动服务
- 显示状态和日志
- 错误检查
5. 文档
完整文档
- ✅
DOCKER_DEPLOYMENT.md- 详细部署指南(50+ 页) - ✅
PRE_DEPLOYMENT_CHECKLIST.md- 部署前检查清单 - ✅
DOCKER_QUICK_REFERENCE.md- 快速参考 - ✅
DOCKER_README.md- 快速开始指南 - ✅
DEPLOYMENT_SUMMARY.md- 本文档
配置示例
- ✅
.env.example- 环境变量示例 - ✅
docker-compose.override.yml.example- 覆盖配置示例 - ✅
.gitignore- Git 忽略规则
📋 部署步骤
第一步:验证环境
.\verify-config.ps1
检查项:
- Docker 和 Docker Compose 安装
- MySQL 服务器连接
- 配置文件完整性
- 项目编译状态
第二步:初始化数据库
mysql -h 101.132.182.216 -P 3306 -u root -p < init-database.sql
这将:
- 创建
petwash数据库 - 创建
Packages和Orders表 - 插入初始套餐数据
- 创建索引
第三步:部署服务
Windows
.\deploy.ps1
Linux/macOS
chmod +x deploy.sh
./deploy.sh
部署脚本将:
- 停止旧容器
- 构建 Docker 镜像
- 启动新容器
- 显示状态和日志
第四步:验证部署
# 测试 API
curl http://localhost:5000/api/packages
# 访问 Swagger
浏览器打开: http://localhost:5000/swagger
🔧 配置说明
数据库提供程序切换
应用会根据 DatabaseProvider 配置自动选择数据库:
开发环境 (appsettings.json):
{
"DatabaseProvider": "Sqlite",
"ConnectionStrings": {
"DefaultConnection": "Data Source=petwash.db"
}
}
生产环境 (appsettings.Production.json):
{
"DatabaseProvider": "MySql"
}
Docker 环境变量:
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ConnectionStrings__DefaultConnection=Server=101.132.182.216;...
端口配置
- 容器内部: 80
- 主机映射: 5000
- 访问地址: http://localhost:5000
修改端口:编辑 docker-compose.yml 中的 ports 配置
环境变量
支持的环境变量:
ASPNETCORE_ENVIRONMENT- 运行环境ConnectionStrings__DefaultConnection- 数据库连接Logging__LogLevel__Default- 日志级别ASPNETCORE_URLS- 监听地址
🛠️ 常用运维命令
容器管理
# 启动
docker-compose up -d
# 停止
docker-compose down
# 重启
docker-compose restart
# 查看状态
docker-compose ps
# 查看日志
docker-compose logs -f petwash-api
# 进入容器
docker exec -it petwash-api bash
数据库操作
# 查看数据库信息
docker exec petwash-api dotnet ef dbcontext info
# 查看迁移历史
docker exec petwash-api dotnet ef migrations list
# 手动迁移
docker exec petwash-api dotnet ef database update
镜像管理
# 重新构建(无缓存)
docker-compose build --no-cache
# 查看镜像
docker images | grep petwash
# 清理未使用的镜像
docker image prune -f
📊 系统架构
┌─────────────────┐
│ 用户/客户端 │
└────────┬────────┘
│ HTTP :5000
▼
┌─────────────────┐
│ Docker 容器 │
│ petwash-api │
│ (ASP.NET Core) │
└────────┬────────┘
│ MySQL :3306
▼
┌─────────────────┐
│ MySQL 服务器 │
│ 101.132.182.216 │
│ petwash DB │
└─────────────────┘
🔐 安全建议
生产环境必做
- ✅ 设置 MySQL root 密码
- ✅ 创建专用数据库用户
- ✅ 配置防火墙规则
- ✅ 启用 HTTPS
- ✅ 使用 Docker secrets 管理密码
推荐配置
-- 创建专用用户
CREATE USER 'petwash'@'%' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON petwash.* TO 'petwash'@'%';
FLUSH PRIVILEGES;
更新连接字符串:
Server=101.132.182.216;Database=petwash;User=petwash;Password=strong_password;Port=3306;CharSet=utf8mb4;
❓ 常见问题
1. 无法连接 MySQL
症状: 容器启动失败,日志显示数据库连接错误
解决方案:
# 测试网络
docker exec petwash-api ping 101.132.182.216
# 测试端口
docker exec petwash-api nc -zv 101.132.182.216 3306
# 检查防火墙
# 在 MySQL 服务器上开放 3306 端口
2. 数据库表未创建
症状: API 启动但查询失败
解决方案:
# 手动运行迁移
docker exec petwash-api dotnet ef database update
# 或重新初始化
mysql -h 101.132.182.216 -P 3306 -u root -p < init-database.sql
3. 端口冲突
症状: 容器启动失败,提示端口被占用
解决方案:
修改 docker-compose.yml:
ports:
- "5001:80" # 改为其他端口
4. 镜像构建失败
症状: docker-compose build 失败
解决方案:
# 清理缓存
docker system prune -a
# 重新构建
docker-compose build --no-cache
📈 性能优化
数据库连接池
在 appsettings.Production.json 中配置:
{
"ConnectionStrings": {
"DefaultConnection": "Server=...;Min Pool Size=5;Max Pool Size=100;"
}
}
容器资源限制
在 docker-compose.yml 中添加:
services:
petwash-api:
deploy:
resources:
limits:
cpus: '1.0'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M
🔄 更新和回滚
更新部署
# 1. 拉取最新代码
git pull
# 2. 重新部署
.\deploy.ps1
回滚
# 1. 停止当前容器
docker-compose down
# 2. 切换到旧版本
git checkout <previous-commit>
# 3. 重新部署
.\deploy.ps1
📞 技术支持
查看日志
# 实时日志
docker-compose logs -f petwash-api
# 最近 100 行
docker-compose logs --tail=100 petwash-api
# 保存日志到文件
docker-compose logs petwash-api > logs.txt
健康检查
# API 健康
curl http://localhost:5000/api/packages
# 容器状态
docker-compose ps
# 资源使用
docker stats petwash-api
🎯 下一步
部署完成后,你可以:
- 配置监控: 添加日志收集和监控系统
- 设置备份: 配置数据库自动备份
- 启用 HTTPS: 配置 SSL 证书
- 负载均衡: 部署多个实例
- CI/CD: 集成自动化部署流程
📚 相关文档
✨ 总结
你现在拥有:
- ✅ 完整的 Docker 配置
- ✅ 自动化部署脚本
- ✅ MySQL 数据库支持
- ✅ 详细的文档和指南
- ✅ 故障排查方案
- ✅ 安全和性能建议
准备好部署了!运行 .\verify-config.ps1 开始吧! 🚀