无法连接到docker映像中的MySQL

我已经find了这个主题的一些线索,但他们都没有能够帮助我,因为我已经提供的解决scheme或问题是不完全一样的


我有一个nginx / php-fpm等服务器的docker环境,并使用正在链接到另一个服务器的官方mysql映像。 这是我的docker写作

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,当我正确设置参数,我总是得到错误

驱动程序发生exception: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连接的部分

学说configuration

 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