我对docker相当新,我刚刚浏览了CMS,看看他们配置起来有多容易。到目前为止,Wordpress和Joomla退房了。
当我运行链接到mysql的drupal容器时,我进入drupal安装屏幕并说它连接数据库,我使用我的root凭据和db host是'localhost',并且在尝试连接时收到错误。我附上了一张图片来显示输出结果。drupal-config-db-output-error
我得到的错误:
Failed to connect to your database server. The server reports the following message: SQLSTATE[HY000] [2002] No such file or directory.
对此的任何帮助都会很棒。我试着看看我是否可以使用配置文件访问物理卷,但我无法使用Kitematic找到它们。
谢谢!
答案 0 :(得分:7)
以下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 links。这将创建一个名为“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
答案 1 :(得分: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' => '',
);