# REDCap Docker Compose 配置 - 生产环境 # 版本:v1.0 # 日期:2026-01-01 # 用途:阿里云ECS生产环境或医院内网部署 # 差异:移除phpMyAdmin,配置RDS MySQL,添加资源限制 version: '3.8' services: # ========== REDCap Web服务 (Apache + PHP 8.1 + REDCap) ========== redcap-web: build: context: . dockerfile: Dockerfile.redcap container_name: redcap-apache restart: always ports: - "80:80" # 如需HTTPS,添加: # - "443:443" volumes: # REDCap源代码(只读) - ../redcap15.8.0/redcap:/var/www/html/redcap:ro # 配置文件 - ./config/apache/redcap.conf:/etc/apache2/sites-available/000-default.conf:ro - ./config/php/php.ini:/usr/local/etc/php/php.ini:ro - ./config/database.php:/var/www/html/redcap/database.php:ro # SSL证书(如需HTTPS) # - ./ssl/cert.pem:/etc/ssl/certs/redcap.crt:ro # - ./ssl/key.pem:/etc/ssl/private/redcap.key:ro # 持久化数据(可读写) - redcap-edocs:/var/www/html/redcap/edocs - redcap-modules:/var/www/html/redcap/modules - redcap-temp:/var/www/html/redcap/temp environment: # 数据库连接信息(使用RDS) # 注意:生产环境应从环境变量读取,不要写死在配置文件中 REDCAP_DB_HOST: ${REDCAP_DB_HOST} # RDS内网地址,如:rm-xxx.mysql.rds.aliyuncs.com REDCAP_DB_PORT: ${REDCAP_DB_PORT:-3306} REDCAP_DB_NAME: ${MYSQL_DATABASE} REDCAP_DB_USER: ${MYSQL_USER} REDCAP_DB_PASS: ${MYSQL_PASSWORD} # PHP配置 TZ: Asia/Shanghai networks: - redcap-network deploy: resources: limits: cpus: '2' memory: 4G reservations: cpus: '1' memory: 2G logging: driver: "json-file" options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD", "curl", "-f", "http://localhost/"] interval: 30s timeout: 10s retries: 3 # ========== MySQL 容器(可选,如不使用RDS) ========== # 注意:生产环境强烈推荐使用阿里云RDS MySQL # 如需使用Docker MySQL,取消下方注释: # # redcap-db: # image: mysql:8.0 # container_name: redcap-mysql # restart: always # environment: # MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} # MYSQL_DATABASE: ${MYSQL_DATABASE} # MYSQL_USER: ${MYSQL_USER} # MYSQL_PASSWORD: ${MYSQL_PASSWORD} # volumes: # - redcap-db-data:/var/lib/mysql # ports: # - "3306:3306" # networks: # - redcap-network # command: --default-authentication-plugin=mysql_native_password # deploy: # resources: # limits: # cpus: '1' # memory: 2G # reservations: # cpus: '0.5' # memory: 1G # ========== 网络配置 ========== networks: redcap-network: driver: bridge name: redcap-network # ========== 数据卷配置 ========== volumes: # MySQL数据(如使用Docker MySQL) # redcap-db-data: # name: redcap-db-data # driver: local # REDCap上传文件(持久化) redcap-edocs: name: redcap-edocs driver: local # External Modules(持久化) redcap-modules: name: redcap-modules driver: local # 临时文件(可定期清理) redcap-temp: name: redcap-temp driver: local