Vin*_*ace 2 mysql drupal docker
我对Docker来说还是新手,我刚刚通过CMS看看他们配置起来有多容易.到目前为止,Wordpress和Joomla退房了.
当我运行链接到mysql的drupal容器时,我进入drupal安装屏幕,并说它连接数据库,我使用我的root凭据和db host是'localhost',并收到尝试连接的错误.我附上了一张图片来显示输出结果.Drupal的配置-DB-输出误差
我得到的错误:
Failed to connect to your database server. The server reports the following message: SQLSTATE[HY000] [2002] No such file or directory.
Run Code Online (Sandbox Code Playgroud)
对此的任何帮助都会很棒.我试图看看我是否可以使用配置文件访问物理卷,但我无法使用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
Run Code Online (Sandbox Code Playgroud)
请注意,drupal容器使用docker链接.这将创建一个名为"mysql"的/ etc/hosts条目.运行drupal安装屏幕时使用此代替"localhost".
自最初起草此答案以来,docker撰写文件语法已更改.
这是更新的语法
version: '2'
services:
mysql:
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:
- mysql
ports:
- "8080:80"
volumes:
- /var/www/html/sites
- /var/www/private
Run Code Online (Sandbox Code Playgroud)
小智 6
对我来说,技巧是在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' => '',
);
Run Code Online (Sandbox Code Playgroud)