Docker:在Drupal安装过程中,链接到mysql容器的Drupal容器无法连接到mysql

我对docker工作人员相当陌生,而且我刚刚通过CMS了解了他们的configuration是多么的简单。 到目前为止,WordPress的和Joomla检查出来。

当我运行连接到mysql的drupal容器时,我进入了drupal安装屏幕,并在那里说连接数据库,并使用我的根证书和数据库主机'本地主机',并收到错误尝试连接。 我附上了一张图片来显示输出。 Drupal的configuration-DB-输出误差

我得到的错误:

Failed to connect to your database server. The server reports the following message: SQLSTATE[HY000] [2002] No such file or directory. 

任何帮助,这将是伟大的。 我试图看看是否可以使用configuration文件访问物理卷,但是我找不到使用Kitematic的卷。

谢谢!

下面的docker compose文件将启动Drupal连接到另一个运行Mysql的容器

 db: image: mysql environment: - MYSQL_ROOT_PASSWORD=letmein - MYSQL_DATABASE=drupal - MYSQL_USER=drupal - MYSQL_PASSWORD=drupal volumes: - /var/lib/mysql web: image: drupal links: - db:mysql ports: - "8080:80" volumes: - /var/www/html/sites - /var/www/private 

请注意,Drupal容器使用docker链接 。 这将创build一个名为“mysql”的/ etc / hosts条目。 在运行drupal安装屏幕时使用这个而不是“localhost”。


注意

因为这个答案是最初起草的,所以docker工具文件的语法已经改变了。

这里是更新的语法

 version: '2' services: db: image: mysql environment: - MYSQL_ROOT_PASSWORD=letmein - MYSQL_DATABASE=drupal - MYSQL_USER=drupal - MYSQL_PASSWORD=drupal volumes: - /var/lib/mysql web: image: drupal depends_on: - db ports: - "8080:80" volumes: - /var/www/html/sites - /var/www/private 

我的窍门是在Drupal连接设置(settings.local.php)中添加数据库容器的服务名称,而不是“localhost”或“127.0.0.1”,如:

 $databases['default']['default'] = array( 'database' => 'database-name', 'username' => 'root', 'password' => 'root', 'host' => 'database-container-name', 'port' => '3306', 'driver' => 'mysql', 'prefix' => '', );