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

Docker部署Web与数据库容器无法连接问题排查求助

问题排查与解决方案

核心问题:数据库连接被拒绝(SQLSTATE[HY000] [2002])

你的MRBS数据库配置犯了Docker容器间通信的典型错误:

  • 主机地址错误:Web容器里的127.0.0.1指向容器自身,而非数据库容器。在Docker Compose的自定义网络mrbsNet中,容器间需要通过服务名(即mrbs_db)来互相访问,Compose会自动维护DNS解析。
  • 端口错误:33060是宿主机的映射端口,容器内部连接数据库时,应该使用数据库容器的内部端口3306,而非宿主机的映射端口。

修改MRBS的数据库配置为:

$dbsys = "mysqli";
$db_host = "mrbs_db"; // 替换为数据库服务名
$db_port = 3306; // 使用容器内部端口
$db_database = "mrbs";
$db_login = "user";
$db_password = 'user';

其他报错处理

1. Locale设置失败(Notice: Server failed to set locale...)

Web容器缺少对应的UTF-8 locale包,需要在Web服务的Dockerfile中添加以下命令(基于Debian/Ubuntu镜像):

RUN apt-get update && apt-get install -y locales && \
    locale-gen en.UTF-8 en_GB.UTF-8 && \
    update-locale LANG=en.UTF-8
ENV LANG=en.UTF-8
ENV LC_ALL=en.UTF-8

2. Headers already sent警告

这个错误是因为PHP在调用ini_set()或session_start()之前已经输出了内容(比如配置文件开头的空白字符、换行)。检查MRBS的配置文件或入口文件,确保:

  • <?php标签前没有任何空白字符、换行或HTML输出
  • 所有session初始化、ini配置修改的代码在任何输出操作之前执行

验证步骤

  1. 修改配置后重启容器:
    docker-compose down && docker-compose up -d --build
    
  2. 进入Web容器测试数据库连通性:
    docker exec -it mrbs bash
    # 执行后在容器内运行以下命令,输入密码user测试
    mysql -h mrbs_db -u user -p mrbs
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:13:42