我已经找到了该主题的一些线索,但没有一个能够帮助我,因为我已经完成了提供的解决方案,或者问题与我的不完全相同。
我有一个带有nginx / php-fpm等服务器的docker环境,并且正在使用我要链接到其他服务器的官方mysql映像。这是我的码头工人组成
db:
image: mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=symfonyrootpass
- MYSQL_DATABASE=symfony
- MYSQL_USER=symfony
- MYSQL_PASSWORD=symfonypass
project:
image: docker.io/project/project-dev
ports:
- "80:80"
environment:
- XDEBUG_HOST=${LOCAL_IP}
- XDEBUG_PORT=9000
- XDEBUG_REMOTE_MODE=req
links:
- db
volumes:
- ../project:/var/www/app
当我启动它并像这样从主机连接时:mysql -h127.0.0.1 -usymfony -psymfonypass
然后使用use symfony;
它就可以正常工作。我看到我的数据库,可以编辑,删除,更新等。我可以做所有事情。
但是,我不能对docker说同样的话。我正在使用Symfony,并且在正确设置参数后,总是会收到错误消息
驱动程序中发生异常:SQLSTATE [HY000] [2002]连接被拒绝
这些是我的参数
database_host: 127.0.0.1
database_port: null
database_name: symfony
database_user: symfony
database_password: symfonypass
我已经尝试更改database_host
为,localhost
但是随后出现No such file or directory
了使用相同SQLSTATE的错误。我也尝试将端口设置为,3306
但这也无济于事。
从docker内部访问我的数据库需要做什么?
这是config.yml
我描述mysql连接的部分
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
server_version: "%database_version%"
您的数据库运行在与项目不同的容器中。Docker-compose将为它提供一个IP地址和一个主机名,即db,因为这是您命名的方式。因此,database_host不应为127.0.0.1或localhost,而应为db。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句