feat(redcap): REDCap 15.8.0 Docker本地开发环境部署完成

核心成果:
- REDCap 15.8.0成功部署在Docker环境
- 登录功能正常,管理员账户: Admin/Admin123!
- MySQL 8.0 + PHP 8.1 + Apache 2.4环境验证通过

问题解决:
1. 修复ERR_CONTENT_DECODING_FAILED错误
   - 强制禁用Apache deflate模块
   - PHP配置关闭zlib.output_compression
   - 自动注释REDCap源码中的压缩设置

2. 修复Base URL配置错误
   - 更新redcap_config表中的redcap_base_url
   - 统一DocumentRoot与访问路径

3. 修复登录失败问题(CRLF污染)
   - 删除database.php末尾的PHP结束标签
   - 创建.gitattributes规范换行符
   - 验证REDCap官方源码无此问题

技术改进:
- 添加密码重置工具脚本
- 完善docker-entrypoint.sh启动脚本
- 创建详细的部署问题解决记录
- 建立PHP配置文件最佳实践

部署文档:
- REDCap本地Docker开发环境部署方案
- REDCap生产环境部署决策报告(ECS vs SAE)
- 部署问题解决记录(含根因分析)

下一步:
- Day 2: 开发REDCap API Adapter
- 实现与IIT Manager Agent的数据对接
This commit is contained in:
2026-01-02 10:02:46 +08:00
parent dac3cecf78
commit 38d9bf99d6
25 changed files with 3990 additions and 0 deletions

366
redcap-docker-dev/README.md Normal file
View File

@@ -0,0 +1,366 @@
# REDCap Docker部署环境
> **IIT Manager Agent项目 - REDCap开发/生产一致性环境**
> 版本v1.0 | 日期2026-01-01
---
## 📋 目录
1. [快速开始](#快速开始)
2. [项目结构](#项目结构)
3. [环境要求](#环境要求)
4. [详细部署步骤](#详细部署步骤)
5. [常用命令](#常用命令)
6. [故障排查](#故障排查)
7. [生产环境部署](#生产环境部署)
---
## 🚀 快速开始
### 一键部署(推荐)
```powershell
# 进入项目目录
cd redcap-docker-dev
# 运行一键部署脚本
.\scripts\setup-redcap.ps1
# 访问REDCap
# http://localhost:8080/install.php
```
### 手动部署
```powershell
# 1. 复制环境变量模板
copy env.template .env
# 2. 构建并启动容器
docker-compose up -d
# 3. 查看容器状态
docker-compose ps
```
---
## 📁 项目结构
```
redcap-docker-dev/
├── docker-compose.yml # Docker编排开发环境
├── docker-compose.prod.yml # Docker编排生产环境
├── Dockerfile.redcap # REDCap镜像定义
├── docker-entrypoint.sh # 容器启动脚本
├── env.template # 环境变量模板
├── .gitignore # Git忽略规则
├── config/ # 配置文件目录
│ ├── apache/
│ │ └── redcap.conf # Apache虚拟主机配置
│ ├── php/
│ │ └── php.ini # PHP配置
│ └── database.php # REDCap数据库配置
├── scripts/ # 运维脚本
│ ├── setup-redcap.ps1 # 一键部署
│ ├── start-redcap.ps1 # 启动服务
│ ├── stop-redcap.ps1 # 停止服务
│ ├── logs-redcap.ps1 # 查看日志
│ └── clean-redcap.ps1 # 清理环境
└── README.md # 本文档
```
---
## 💻 环境要求
### 软件要求
- **Docker Desktop**20.10+ Windows/Mac
- **PowerShell**5.1+ 或 PowerShell Core 7+
- **内存**至少4GB可用
- **磁盘**至少10GB可用空间
### REDCap源码
确保REDCap源码位于正确位置
```
AIclinicalresearch/
├── redcap15.8.0/
│ └── redcap/
└── redcap-docker-dev/ # 当前目录
```
---
## 📖 详细部署步骤
### 步骤1准备环境变量
```powershell
# 复制模板
copy env.template .env
# (可选)编辑.env修改密码
notepad .env
```
**默认配置(开发环境)**
- MySQL Root密码`redcap_root_dev_2026`
- MySQL数据库`redcap`
- MySQL用户`redcap_user`
- MySQL密码`redcap_pass_dev_456`
⚠️ **生产环境必须修改所有密码!**
### 步骤2构建Docker镜像
```powershell
docker-compose build
```
**预计时间**5-10分钟首次
### 步骤3启动容器
```powershell
docker-compose up -d
```
**启动的服务**
- `redcap-mysql`MySQL 8.0数据库
- `redcap-apache`REDCap Web服务
- `redcap-phpmyadmin`:数据库管理工具(可选)
### 步骤4等待服务就绪
```powershell
# 等待30秒让MySQL完全启动
# 然后访问http://localhost:8080/install.php
```
### 步骤5安装REDCap
访问http://localhost:8080/install.php
**数据库配置**
- Hostname`redcap-db`
- Database`redcap`
- Username`redcap_user`
- Password`redcap_pass_dev_456`
- Salt`iit_dev_salt_2026_redcap_v15_do_not_change`
**管理员账户(示例)**
- Username`admin`
- Password`Admin@123456`(开发环境)
- Email`dev@example.com`
**SMTP配置**
- 选择"Skip SMTP Configuration"(开发环境不需要邮件)
---
## 🔧 常用命令
### 启动/停止
```powershell
# 启动服务
.\scripts\start-redcap.ps1
# 停止服务(保留数据)
.\scripts\stop-redcap.ps1
# 重启服务
.\scripts\stop-redcap.ps1
.\scripts\start-redcap.ps1
```
### 查看日志
```powershell
# 查看所有服务日志
.\scripts\logs-redcap.ps1
# 查看特定服务
.\scripts\logs-redcap.ps1 -Service redcap-web
# 实时跟踪日志
.\scripts\logs-redcap.ps1 -Follow
# 显示更多行
.\scripts\logs-redcap.ps1 -Tail 100
```
### 容器管理
```powershell
# 查看容器状态
docker-compose ps
# 进入容器
docker exec -it redcap-apache bash
# 重启特定容器
docker-compose restart redcap-web
# 查看资源使用
docker stats
```
### 数据库管理
```powershell
# 通过phpMyAdmin
# 访问http://localhost:8081
# 用户root
# 密码redcap_root_dev_2026
# 或通过命令行
docker exec -it redcap-mysql mysql -uroot -predcap_root_dev_2026 redcap
```
### 清理环境
```powershell
# 完全清理(删除所有数据)
.\scripts\clean-redcap.ps1
```
⚠️ **警告**:此命令会删除所有数据,无法恢复!
---
## 🔍 故障排查
### 问题1容器无法启动
```powershell
# 检查Docker状态
docker info
# 查看容器日志
docker-compose logs
# 检查端口占用
netstat -ano | findstr :8080
```
### 问题2无法访问REDCap
```powershell
# 检查容器运行状态
docker-compose ps
# 检查Apache日志
docker-compose logs redcap-web
# 进入容器诊断
docker exec -it redcap-apache bash
curl localhost
```
### 问题3数据库连接失败
```powershell
# 检查MySQL日志
docker-compose logs redcap-db
# 等待MySQL完全启动30秒
Start-Sleep -Seconds 30
# 测试连接
docker exec -it redcap-mysql mysql -uredcap_user -predcap_pass_dev_456 -e "SHOW DATABASES;"
```
### 问题4端口冲突
```powershell
# 修改docker-compose.yml中的端口映射
# 例如将8080改为8888
ports:
- "8888:80" # 主机端口:容器端口
```
---
## 🏗️ 生产环境部署
### 使用生产配置
```powershell
# 使用生产环境配置文件
docker-compose -f docker-compose.prod.yml up -d
```
### 关键差异
| 配置项 | 开发环境 | 生产环境 |
|--------|---------|---------|
| **phpMyAdmin** | ✅ 启用 | ❌ 禁用(安全) |
| **MySQL** | Docker容器 | 阿里云RDS推荐 |
| **密码** | 简单密码 | 强密码32+字符) |
| **SSL** | 不需要 | 必需HTTPS |
| **日志** | 详细 | 精简 |
| **资源限制** | 无 | 配置限制 |
### 生产环境检查清单
- [ ] 修改所有默认密码
- [ ] 配置RDS MySQL连接
- [ ] 移除phpMyAdmin容器
- [ ] 启用HTTPSSSL证书
- [ ] 配置防火墙规则
- [ ] 配置自动备份
- [ ] 配置监控告警
- [ ] 限制SSH访问
### 详细生产部署文档
参考:`docs/03-业务模块/Redcap/03-REDCap本地Docker开发环境部署方案.md`
---
## 📚 相关文档
- [REDCap本地Docker开发环境部署方案](../../docs/03-业务模块/Redcap/03-REDCap本地Docker开发环境部署方案.md)
- [REDCap生产环境部署ECS vs SAE深度决议报告](../../docs/03-业务模块/Redcap/REDCap%20生产环境部署ECS%20vs%20SAE%20深度决议报告.md)
- [REDCap二次开发深度指南](../../docs/03-业务模块/Redcap/REDCap%20二次开发深度指南.md)
- [IIT Manager Agent MVP开发任务清单](../../docs/03-业务模块/IIT%20Manager%20Agent/04-开发计划/MVP开发任务清单.md)
---
## 📞 技术支持
**需要帮助?**
1. 查看详细文档(上方链接)
2. 查看容器日志:`.\scripts\logs-redcap.ps1`
3. 参考REDCap官方文档https://projectredcap.org/
4. 联系IIT Manager开发团队
---
## 🎯 下一步
**部署成功后**
1.**完成REDCap安装**install.php
2.**创建测试项目**IIT试验项目
3.**生成API Token**
4.**开始Day 2开发**REDCap API Adapter
参考:[MVP开发任务清单](../../docs/03-业务模块/IIT%20Manager%20Agent/04-开发计划/MVP开发任务清单.md)
---
> **文档维护**IIT Manager开发团队
> **最后更新**2026-01-01
> **版本**v1.0