为了账号安全,请及时绑定邮箱和手机立即绑定

尝试通过 docker 容器中托管的 phpmyadmin 访问 MariaDB 数据库

尝试通过 docker 容器中托管的 phpmyadmin 访问 MariaDB 数据库

PHP
浮云间 2023-07-08 16:25:10
我正在尝试设置一个基本的 LAMP 堆栈,但在容器运行时docker-compose无法使用它连接到mariadb数据库。phpmyadmin为了尝试解决该问题,我将docker-compose.yaml文件剥离为:version: '3.2'                       services:   db:      image: mariadb      container_name: appsDB      restart: always      ports:       - '6603:3306'      environment:        MYSQL_ROOT_PASSWORD: secret   app:      depends_on:       - db      image: phpmyadmin/phpmyadmin      container_name: phpmyadmin      restart: always      ports:       - '8080:80'      environment:        PMA_HOST: db当我运行容器时,我可以导航到该phpmyadmin页面,但是当我输入root/secret用户名/密码时,我收到错误: Cannot log in to the MySQL server mysqli::real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known为了确保这不是我的计算机的问题,我还运行了docker-compose up数据库映像,并将其更改为mysql并保持所有其他细节相同。root/secret然后就没有问题了:phpmyadmin 工作正常,我可以使用上一个图像中使用的相同凭据正常登录。谁能告诉我为什么mariadb会这样,有什么方法可以通过 docker 容器中的 phpmyadmin 访问它吗?
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您是否正在使用过时版本的图像/容器?你的 docker-compose.yml 对我来说工作得很好(我的 Docker 版本是 19.03.8,我认为这并不重要)。

我首先尝试强制它重新创建整个堆栈docker-compose up --force-recreate。我注意到您将此文件称为docker-compose.yaml但正确的默认扩展名应该是 .yml;如果你曾经使用 .yml 文件创建它(或者通过直接向 docker-compose 指定文件名),我可以想象 Docker 会默默地(或者至少不明显地)无法重建新文件,所以双重 -还要检查文件名。

如果这不起作用,我建议进入 phpMyAdmin 容器的 shell 并尝试一些网络命令,看看是否可以直接连接;例如安装mariadb-client包并尝试mysql -u root -h db -p


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信