# REDCap Docker镜像定义 # 基于:PHP 8.1 Apache官方镜像 # 版本:v1.0 # 日期:2026-01-01 # 适用:开发/测试/生产环境 FROM php:8.1-apache LABEL maintainer="IIT Manager Team" LABEL description="REDCap 15.8.0 Docker Image for IIT Manager Agent" LABEL version="1.0" # ========== 设置时区 ========== ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # ========== 配置APT使用阿里云镜像源(加速国内构建) ========== RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources || \ sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list # ========== 安装系统依赖 ========== RUN apt-get update && apt-get install -y \ # 图片处理库(GD扩展需要) libpng-dev \ libjpeg-dev \ libfreetype6-dev \ # ZIP扩展 libzip-dev \ # LDAP扩展(可选,企业认证用) libldap2-dev \ # SOAP扩展(可选,Web Service用) libxml2-dev \ # Cron定时任务 cron \ # 常用工具 curl \ vim \ unzip \ # 清理APT缓存 && rm -rf /var/lib/apt/lists/* # ========== 安装PHP扩展 ========== # GD扩展(图片处理) RUN docker-php-ext-configure gd --with-freetype --with-jpeg && \ docker-php-ext-install -j$(nproc) gd # 数据库扩展 RUN docker-php-ext-install -j$(nproc) \ mysqli \ pdo_mysql # 其他必需扩展 RUN docker-php-ext-install -j$(nproc) \ zip \ soap \ calendar \ bcmath # LDAP扩展(可选) RUN docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ docker-php-ext-install ldap # ========== 启用Apache模块 ========== RUN a2enmod rewrite ssl headers # ========== 创建必需目录 ========== RUN mkdir -p /var/www/html/redcap/edocs && \ mkdir -p /var/www/html/redcap/temp && \ mkdir -p /var/www/html/redcap/modules && \ chown -R www-data:www-data /var/www/html # ========== 配置Cron定时任务 ========== # REDCap需要定期运行cron.php RUN echo "* * * * * www-data /usr/local/bin/php /var/www/html/redcap/cron.php > /proc/1/fd/1 2>&1" >> /etc/crontab && \ echo "" >> /etc/crontab # ========== 复制启动脚本 ========== COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh # ========== 暴露端口 ========== EXPOSE 80 443 # ========== 健康检查 ========== HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ CMD curl -f http://localhost/ || exit 1 # ========== 工作目录 ========== WORKDIR /var/www/html # ========== 启动命令 ========== ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] CMD ["apache2-foreground"]