无法从phpbb连接到docker容器中的mysql

我的docker容器工作得很好,我可以使用我的graphics化的SQL客户端连接到我的数据库。

但是,当我尝试连接到我的phpbb实例,我得到这个错误:

一般错误SQL错误[mysqli]

没有这样的文件或目录[2002]

读取此页面时发生sql错误。 如果问题仍然存在,请联系pipe理员。

phpbbconfiguration看起来像这样:

$dbms = 'mysqli'; $dbhost = 'localhost'; $dbport = ''; $dbname = 'xxxxx_xxxx'; $dbuser = 'xxxxxxxxx'; $dbpasswd = 'xxxxxx'; 

该文件或目录不能find与mysql.so? 如果是的话,我将在dockerconfiguration中设置此?

那么没有人知道发生了什么事?

编辑清晰度:

我的docker-compose.yml看起来像下面,我正在运行与“docker – 组成”

php:image:webdevops / php-nginx链接: – db:数据库卷: – “/ home / xxx / code / mytest:/ mytest-now”端口: – 80:80环境: – WEB_DOCUMENT_ROOT = / mytest / public

 db: image: mariadb:latest volumes: - "mytest-db:/var/lib/mysql" ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: admin MYSQL_DATABASE: dbname MYSQL_USER: user MYSQL_PASSWORD: password 

你的连接不工作的原因是使用localhost 。 我假设你通过docker-compose或者docker来运行你的mysql容器,并且将容器上的3306端口映射到3306。

现在使用graphics用户界面你使用localhost:3306 ,它的工作原理,这是因为你转发docker端口到主机端口。

但是你的phpbb容器本地主机指的是容器本身,因此无法build立连接。 所以几乎没有办法让它工作

主机IP

使用已经映射端口3306的主机IP

 $dbhost = '192.168.0.102'; 

这不是一个推荐的方法,因为当您连接到不同的networking时,您的主机IP将会改变

使用mysql容器名称

--name mysqldb运行你的mysql容器,并在连接中使用这个名字

 $dbhost = 'mysqldb'; 

使用mysql服务名称

如果您使用docker-compose并将mysql添加为服务

 version: '3' services: mysqldb2: image: mysql environment: - MYSQL_ROOT_PASSWORD=root phpbb: ..... 

然后,您可以在连接设置中使用服务名称

 $dbhost = 'mysqldb2'; 

运行“docker inspect containername”后,我注意到一个ip地址:NetworkSettings.Networks.bridge.gateway。

当我尝试过,它的工作!