Symfony docker容器无法连接到Mysql

我的堆栈很常见,一个用于我的Symfony应用程序的容器,另一个用于Mysql。 出于某种原因,Symfony无法连接到以下错误的Mysql容器:

致命错误:带有消息'SQLSTATE [HY000] [2002]的未捕获exception'PDOException'无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器'

一个简单的php文件来testingMySQL连接,在Symfony容器上就可以工作了

<?php $dbh = new PDO('mysql:host=database;dbname=mysite', 'mysite', 'password'); 

这里是我的Symfony参数文件:

 database_driver: pdo_mysql database_host: database database_port: 3306 database_name: mysite database_user: mysite database_password: password 

这里是我的docker-compose文件:

 site: build: webapp ports : - "80:80" volumes: - /home/myuser/dev/mysite:/var/www/html/ links: - database database: image: mysql:5.5 ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_DATABASE=mysite - MYSQL_USER=mysite - MYSQL_PASSWORD=password 

我也尝试了一个新的Symfony项目,没有错误。

删除要使用的数据库驱动程序和端口。 由于您没有使用端口转发,因此您不必为MySQL指定端口。 另外,你的驱动有一个错误,不仅仅是pdo而是pdo_mysql ( 文档 )。

 database_host: database database_name: mysite database_user: mysite database_password: password 

另外,为什么你指定一个database_path ? MySQL不需要,因为你通过TCP / IP来调用它。 旧的SQLite数据库?

你也可以签出你的config.yml文件:

 # Doctrine Configuration doctrine: dbal: driver: pdo_mysql host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 # if using pdo_sqlite as your database driver: # 1. add the path in parameters.yml # eg database_path: "%kernel.root_dir%/data/data.db3" # 2. Uncomment database_path in parameters.yml.dist # 3. Uncomment next line: # path: "%database_path%" orm: auto_generate_proxy_classes: "%kernel.debug%" naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true