Docker搭建LAMP时phpMyAdmin连接MariaDB报名称解析错误如何解决
问题原因
这个报错的本质是phpMyAdmin容器无法解析数据库服务的域名,找不到对应的数据库地址,原因有两个:
- 你的phpMyAdmin配置中没有指定
MYSQL_HOST环境变量,phpMyAdmin默认会尝试连接名为db的数据库主机,但你的数据库服务名是database,主机名不匹配,导致解析失败。 - phpMyAdmin服务没有显式加入
default网络,虽然Docker Compose默认会给未指定网络的服务加入默认网络,但显式配置可以避免不同版本的兼容性问题。
解决方法
第一步:修改Docker Compose配置
调整phpmyadmin服务的配置,补充MYSQL_HOST环境变量和网络配置,冗余的links配置可以直接删除,同Docker网络下服务名可直接作为域名互通:
phpmyadmin: image: phpmyadmin/phpmyadmin container_name: 'phpmyadmin' networks: - default environment: MYSQL_HOST: database MYSQL_USER: root MYSQL_PASSWORD: test MYSQL_ROOT_PASSWORD: test ports: - 8000:80
第二步:重启服务
执行以下命令销毁旧容器并重新启动服务:
docker compose down && docker compose up -d
第三步:验证登录
等待服务启动完成后,再次访问localhost:8000,直接输入用户名root、密码test即可正常登录,不需要额外填写服务器地址。
可选排查步骤
如果修改后仍然报错,可以按以下步骤排查:
- 执行
docker compose ps确认所有容器状态均为Up,没有异常退出 - 执行
docker exec -it phpmyadmin ping database,如果能正常返回响应说明网络互通正常,问题出在phpMyAdmin配置;如果不通则检查两个服务是否在同一网络下,可以执行docker network ls找到对应项目的默认网络,再用docker network inspect 网络名确认两个容器都在该网络的容器列表中。
内容的提问来源于stack exchange,提问作者El Hombre Sin Nombre
相关产品推荐
相关产品推荐

