Dorisoy.Pan Docker 容器化部署实战:快速启动你的 .NET 10 文档管理系统
Dorisoy.Pan Docker 容器化部署实战快速启动你的 .NET 10 文档管理系统【免费下载链接】Dorisoy.PanDorisoy.Pan 是基于 .NET 10 的跨平台文档管理系统使用 MS SQL 2012 / MySQL 8.0或更高版本后端数据库您可以在 Windows、Linux 或 Mac 上运行它。项目中的所有方法都是异步的支持 JWT 令牌身份验证项目体系结构遵循 CQRS MediatR 模式和最佳安全实践。源代码完全可定制热插拔且清晰的体系结构使开发定制功能和遵循任何业务需求变得容易。项目地址: https://gitcode.com/gh_mirrors/do/Dorisoy.PanDorisoy.Pan 是一款基于 .NET 10 的跨平台文档管理系统支持 MySQL 8.0 / SQL Server 2012内置 JWT 认证、文件加密存储、文件夹共享、在线预览等企业级能力。对于新手来说最头疼的往往是环境配置——而Dorisoy.Pan Docker 容器化部署正是解决这一痛点的终极方案只需几条命令即可在 Windows、Linux 或 Mac 上快速启动一整套文档管理系统无需手动安装 .NET SDK、MySQL 和 Redis。本教程将手把手带你完成容器化部署全流程。Dorisoy.Pan 文档管理系统登录界面.png)为什么选择 Docker 部署 Dorisoy.Pan传统方式部署 Dorisoy.Pan 需要依次安装 .NET 10 Runtime、MySQL 8.0、Redis还要处理数据库初始化脚本步骤繁琐且极易出错。而 Docker 容器化部署有以下核心优势一键启动docker compose up -d即可拉起 API MySQL Redis 全套服务环境隔离不再污染宿主机开发与生产环境行为一致数据持久化通过数据卷挂载容器销毁也不丢失文件与数据库快速迁移镜像构建一次任意服务器直接复用Docker 部署前环境准备快速检查清单 ✅正式开始前请先确认你的服务器满足以下要求组件版本要求操作系统Ubuntu 22.04 / CentOS 8 / Debian 11 等主流 Linux 发行版Docker20.10Docker Composev2.0推荐服务器内存建议 4GB 及以上安装 Docker 并验证sudo apt update sudo apt install -y docker.io docker-compose-plugin sudo systemctl enable --now docker docker --version docker compose version第一步获取 Dorisoy.Pan 源码将项目克隆到服务器仓库地址https://gitcode.com/gh_mirrors/do/Dorisoy.Pan然后进入Web目录——这是服务端 API 的项目根目录git clone https://gitcode.com/gh_mirrors/do/Dorisoy.Pan cd Dorisoy.Pan/Web服务端采用 CQRS MediatR 分层架构各项目职责清晰如 Dorisoy.Pan.API 是 REST API 入口Dorisoy.Pan.Domain 承载 EF Core 数据库迁移Dorisoy.Pan.MediatR 存放 Command/Query 处理器。第二步准备数据库初始化脚本Dorisoy.Pan 提供了开箱即用的 SQL 脚本位于SQL/目录SQL/MySQL.sqlMySQL 表结构与初始数据SQL/PROCEDURE-MySQL.sqlMySQL 存储过程SQL/MsSQL.sqlSQL Server 版本这些脚本稍后会由 MySQL 容器首次启动时自动执行无需手工导入。第三步编写 Docker Compose 编排文件核心步骤在项目根目录创建docker-compose.yml一键编排 API、MySQL、Redis 三个服务。以下是最快配置方法直接复制即可version: 3.8 services: mysql: image: mysql:8.0 container_name: dorisoy-pan-mysql restart: always environment: MYSQL_ROOT_PASSWORD: your_root_password MYSQL_DATABASE: dorisoy_pan MYSQL_USER: dorisoy MYSQL_PASSWORD: your_password ports: - 3306:3306 volumes: - mysql_data:/var/lib/mysql - ./SQL/MySQL.sql:/docker-entrypoint-initdb.d/01-schema.sql - ./SQL/PROCEDURE-MySQL.sql:/docker-entrypoint-initdb.d/02-procedures.sql command: --character-set-serverutf8mb4 --collation-serverutf8mb4_unicode_ci redis: image: redis:7-alpine container_name: dorisoy-pan-redis restart: always ports: - 6379:6379 api: build: context: ./Web dockerfile: Dorisoy.Pan.API/Dockerfile image: dorisoy-pan-api:latest container_name: dorisoy-pan-api restart: always ports: - 5000:5000 - 5001:5001 volumes: - ./config/appsettings.json:/app/appsettings.json - api_documents:/app/Documents - api_users:/app/Users - api_logs:/app/Logs depends_on: - mysql - redis volumes: mysql_data: api_documents: api_users: api_logs:编排文件关键点解读api服务从 Web/Dorisoy.Pan.API/Dockerfile 构建镜像该 Dockerfile 基于mcr.microsoft.com/dotnet/aspnet:10.0采用多阶段构建最终镜像仅包含运行时体积更小MySQL 容器通过/docker-entrypoint-initdb.d/目录自动执行初始化 SQL无需手动建库挂载config/appsettings.json覆盖容器内默认配置实现配置外置第四步创建并修改 appsettings.json 配置文件创建配置目录并写入应用配置mkdir -p configconfig/appsettings.json中最关键的三个配置项如下{ connectionStrings: { DocumentDbConnectionString: servermysql;Port3306;userdorisoy;passwordyour_password;databasedorisoy_pan;Allow User VariablesTrue, Redis: redis:6379 }, JwtSettings: { key: This*IsA!Long)Keysdfsdsdsfd(For%CreatingA$SymmetricKey, issuer: http://你的服务器IP:5000, audience: PTCUsers, minutesToExpiration: 720 }, WebApplicationUrl: http://你的前端地址, DocumentPath: Documents, EncryptionKey: 你的加密密钥 }⚠️务必注意使用 Docker Compose 时数据库地址要写服务名mysqlRedis 地址写redis:6379而不是 localhost。生产环境请务必修改JwtSettings:key与EncryptionKey为高强度随机字符串——前者用于 JWT 签名后者用于文件 AES 加密存储。第五步一键构建镜像并启动全套服务回到项目根目录执行容器化部署启动命令docker compose up -d首次执行会自动拉取 MySQL、Redis 镜像并基于 Dockerfile 构建 API 镜像需数分钟。构建完成后查看状态docker compose ps docker compose logs -f api看到日志中出现应用启动成功信息即代表 .NET 10 文档管理系统部署完成。第六步验证部署并登录系统浏览器访问 Swagger 接口文档确认 API 正常http://服务器IP:5000/swagger系统默认登录信息项目值默认管理员账号admingmail.com默认密码admin123Dorisoy.Pan 文档管理界面.png)登录后即可体验完整的文档管理功能文件上传、文件夹树、拖拽上传、在线预览、版本历史等。Dorisoy.Pan 文件上传与卡片视图.png)数据持久化与备份技巧 容器化部署后所有重要数据都保存在 Docker 数据卷中数据位置说明MySQL 数据库mysql_data卷库表与用户数据上传文档api_documents卷映射容器内/app/Documents用户头像api_users卷映射容器内/app/Users运行日志api_logs卷映射容器内/app/Logs备份只需一条命令docker run --rm -v dorisoypan_mysql_data:/data -v $(pwd):/backup alpine tar czf /backup/mysql-backup.tar.gz -C /data .常见问题与故障排查Q1容器启动后 API 一直重启大概率是数据库连接失败。检查appsettings.json中数据库地址是否写成了mysql服务名并确认 MySQL 容器已就绪docker compose logs mysql。Q2文件上传失败确认api_documents卷挂载目录有写入权限并检查磁盘空间是否充足。Q3SignalR 实时通知连不上如果使用 Nginx 反向代理必须配置 WebSocket 升级头Upgrade与Connection否则实时通知与在线状态功能会失效。Q4Redis 没安装会影响使用吗不会。Redis 是可选项仅用于文件并发上传锁控制未连接时系统会自动降级为无锁模式不影响正常使用。安全加固建议生产环境必读 容器化部署成功后上线前请完成以下安全操作修改默认密码立即更改admingmail.com的管理员密码更换密钥重新生成JwtSettings:keyJWT 签名与EncryptionKey文件加密保证至少 32 位随机字符限制端口暴露建议仅暴露 5000 端口并用 Nginx 反代加 HTTPS定期备份将备份脚本加入 crontab定时备份 MySQL 数据卷总结通过 Docker 容器化部署Dorisoy.Pan 这套功能完备的 .NET 10 文档管理系统从环境配置地狱变成了一条命令的事。本文涵盖了从环境准备、Compose 编排、配置外置到数据持久化的完整流程即使零基础的新手也能在 10 分钟内完成部署。部署完成后记得探索它的文件加密存储、文件夹共享、版本控制、外部分享链接等亮点功能让这套开源系统真正为你的团队提效。【免费下载链接】Dorisoy.PanDorisoy.Pan 是基于 .NET 10 的跨平台文档管理系统使用 MS SQL 2012 / MySQL 8.0或更高版本后端数据库您可以在 Windows、Linux 或 Mac 上运行它。项目中的所有方法都是异步的支持 JWT 令牌身份验证项目体系结构遵循 CQRS MediatR 模式和最佳安全实践。源代码完全可定制热插拔且清晰的体系结构使开发定制功能和遵循任何业务需求变得容易。项目地址: https://gitcode.com/gh_mirrors/do/Dorisoy.Pan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考