You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行docker-compose up时无法下载pecl/mongodb,Docker新手求助解决方案

问题原因

这个错误是容器构建过程中,PHP的pecl工具无法通过SSL连接到pecl.php.net下载mongodb扩展,常见触发原因有三个:

  • 容器内部网络不通,无法访问pecl.php.net的443端口
  • 默认pecl源在国内访问速度慢或被阻断
  • 容器内缺少SSL根证书,导致无法建立可信的SSL连接
解决办法

以下是几种可行的修复方案,按优先级尝试:

1. 排查容器网络连通性

先确认容器能否访问外部网络:
在你的Dockerfile中添加临时测试命令(测试完成后可删除):

RUN curl -I https://pecl.php.net

重新执行docker-compose build,如果curl失败,说明网络存在问题:

  • 先检查宿主机能否正常访问https://pecl.php.net,宿主机不通的话优先解决宿主机网络问题
  • 若宿主机能访问但容器不行,检查Docker的网络配置,比如是否开启了代理、防火墙规则是否限制了容器网络

2. 更换国内pecl镜像源

国内访问官方pecl源经常不稳定,换成国内镜像源可解决大部分下载问题:
修改Dockerfile中安装mongodb的步骤,先配置国内镜像再执行安装:

针对Debian/Ubuntu系PHP镜像:

# 安装SSL根证书(避免证书验证失败)
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && update-ca-certificates && rm -rf /var/lib/apt/lists/*

# 配置阿里云pecl镜像
RUN pecl config set mirror https://mirrors.aliyun.com/pecl/

# 安装mongodb扩展并启用
RUN pecl install mongodb && docker-php-ext-enable mongodb

针对Alpine系PHP镜像:

# 安装SSL根证书
RUN apk add --no-cache ca-certificates

# 配置阿里云pecl镜像
RUN pecl config set mirror https://mirrors.aliyun.com/pecl/

# 安装mongodb扩展并启用
RUN pecl install mongodb && docker-php-ext-enable mongodb

3. 离线安装mongodb扩展

如果网络问题无法解决,可以提前下载扩展包进行离线安装:

  1. 从pecl.php.net下载对应PHP版本的mongodb扩展包(例如mongodb-1.16.1.tgz)
  2. 将下载的包放到和Dockerfile同一目录下
  3. 修改Dockerfile:
# 复制本地扩展包到容器内
COPY mongodb-1.16.1.tgz /tmp/

# 安装离线包
RUN pecl install /tmp/mongodb-1.16.1.tgz && docker-php-ext-enable mongodb

最终操作

修改完Dockerfile后,执行以下命令重新构建并启动容器:

docker-compose build --no-cache
docker-compose up

内容的提问来源于stack exchange,提问作者user22583785

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:18:10