我已经找到了一些关于这个主题的线索,但没有一个能够帮助我,因为我已经提供了解决方案,或者问题与我的不完全相同
我有一个带有nginx / php-fpm等服务器的docker环境,并且正在使用我链接到另一台服务器的官方mysql映像。这是我的docker-compose
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;
它可以正常工作。我看到了我的数据库,我可以编辑,删除,更新等等。我可以做任何事情。
但是,我不能对码头工作者说同样的话。我正在使用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内部访问我的数据库需要做什么?
这是我描述我的mysql连接的config.yml
中的部分
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%"
答案 0 :(得分:3)
您的数据库在与项目不同的容器中运行。 Docker-compose会为它提供一个IP地址和一个主机名,即 db ,因为这就是你的命名方式。因此, database_host 不应该是127.0.0.1或localhost,而是 db 。