Docker中用Composer安装WordPress遇连接超时问题求助
解决Docker构建中Composer下载超时及Git缺失问题
问题核心
构建日志暴露三个关键问题:
- 网络超时:Composer依赖下载触发curl error 28,无法从GitHub获取预编译包
- Git缺失:系统未安装Git,导致无法 fallback 到源码仓库拉取依赖
- 冗余配置警告:PHP zip模块重复加载,虽不阻断构建但需清理无效指令
修复步骤
1. 补充系统必备工具
在Dockerfile中安装Git和unzip:
- Git:支持Composer从源码仓库拉取依赖,作为预编译包下载失败的备选方案
- unzip:替代PHP zip扩展解压包,避免权限丢失和归档损坏的报错
2. 优化Dockerfile分层缓存
将不变的操作(系统依赖安装、PHP扩展配置)前置,可变操作(应用代码复制)后置,减少重复构建时的资源消耗。
3. 调整Composer执行逻辑
- 本地环境先执行
composer update生成composer.lock,容器内改用composer install,避免构建时重复解析依赖树 - 给Composer设置超时参数,提升网络不稳定场景下的容错性
4. 修复composer.json配置
将johnpbloch/wordpress-core-installer插件权限设为true,否则WordPress核心无法正确安装到指定目录
修改后的Dockerfile
FROM php:8.2-fpm-bullseye # 安装系统依赖并清理缓存,减小镜像体积 RUN apt-get update && \ apt-get install -y --no-install-recommends \ git \ unzip \ libzip-dev && \ rm -rf /var/lib/apt/lists/* # 安装PHP核心扩展,避免重复加载zip模块 RUN docker-php-ext-install mysqli pdo pdo_mysql zip # 安装并启用Xdebug RUN pecl install xdebug-3.2.0 && \ docker-php-ext-enable xdebug # 复制PHP配置文件 COPY ./docker/php/php.ini /usr/local/etc/php/php.ini COPY ./docker/php/xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini COPY ./docker/php/error-logging.ini /usr/local/etc/php/conf.d/error-logging.ini WORKDIR /var/www # 优先复制Composer配置,利用Docker分层缓存 COPY ../../app/composer.json ../../app/composer.lock ./ # 安装Composer并执行依赖安装 ENV COMPOSER_ALLOW_SUPERUSER=1 RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # 设置300秒超时,可选添加国内镜像加速 RUN composer install -n --prefer-dist --timeout=300 # 最后复制完整应用代码 COPY ../../app /var/www # 安装WP CLI RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \ chmod +x wp-cli.phar && \ mv wp-cli.phar /usr/local/bin/wp && \ wp --info # COPY ./docker/php/docker-bootup.sh /var/app/docker-bootup.sh # CMD ["sh", "/var/app/docker-bootup.sh"]
修改后的composer.json
{ "require": { "johnpbloch/wordpress": "*", "wpackagist-theme/bold-photography":"1.3.2" }, "extra": { "installer-paths": { "wp-content/plugins/{$name}/": [ "type:wordpress-plugin" ], "wp-content/themes/{$name}/": [ "type:wordpress-theme" ] }, "wordpress-install-dir": "wp" }, "repositories": [{ "type": "composer", "url": "https://wpackagist.org" }], "config": { "allow-plugins": { "johnpbloch/wordpress-core-installer": true } } }
额外网络优化建议
若仍存在超时问题:
- 给Docker daemon配置国内镜像加速(如阿里云、网易镜像)
- 在Composer命令前添加镜像源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
内容的提问来源于stack exchange,提问作者rayncorg
相关产品推荐
相关产品推荐

