无法从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。
当我尝试过,它的工作!