无法连接到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 。