当前位置: 首页 > 知识库问答 >
问题:

Drupal 8未连接到Docker中的Mysql

魏学智
2023-03-14

Durpal 8的目录结构:

.
├── docker-compose.yml
├── dump
│   └── drupal.sql
├── sessions
└── www
    └── core
    └── site
    └── modules
    └── vendor
    └── index.php

我的settings.php数据库配置

$databases['default']['default'] = array (
'database' => 'drupal',
'username' => 'root',
'password' => 'test',
'prefix' => '',
'host' => '127.0.0.1',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);

我的docker-compose.yml代码

version: "2"
services:
www:
    image: drupal:8
    ports: 
        - "8001:80"
    volumes:
        - ./www:/var/www/html/
    depends_on:
        - db
    networks:
        - default
db:
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    ports: 
        - "3306:3306"
    environment:
        MYSQL_DATABASE: drupal
        MYSQL_USER: user
        MYSQL_PASSWORD: test
        MYSQL_ROOT_PASSWORD: test
    volumes:
        - ./dump:/docker-entrypoint-initdb.d
        - /var/lib/mysql
    networks:
        - default
phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links: 
        - db:db
    ports:
        - 8000:80
    environment:
        PMA_HOST: db
        MYSQL_USER: user
        MYSQL_PASSWORD: test
        MYSQL_ROOT_PASSWORD: test

使用上面的代码,我能够将phpmyadmin连接到mysql,并且工作正常,但是我无法将Drupal连接到mysql,并且出现以下错误:

PDOException:79#0/var/www/html/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php行上的/var/www/html/core/lib/Drupal/core/Database/Driver/mysql/Connection.php(420):PDO中的SQLSTATE[HY000][2002]连接被拒绝-

共有2个答案

淳于兴朝
2023-03-14

替换loca ip地址

'host' => '127.0.0.1',

按服务docker名称

'host' => 'db',
娄利
2023-03-14

我想您应该将数据库连接指向在docker compose文件中创建的主机名。注册时不能是本地主机地址:

$databases['default']['default'] = array (
'database' => 'drupal',
'username' => 'root',
'password' => 'test',
'prefix' => '',
'host' => 'db', #here you point to the container's service name
'port' => '3306', 
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
 类似资料:
  • 因此,在生成AWS SAM模板“web后端”lambda后,我的函数不会连接到我的dynamodb docker实例。 这是我正在使用的JavaScript代码: 在我的终端上运行: 命中生成的endpoint终端给出错误信息: 如果我试着通过邮递员打发电机,我会得到: 所以dynamodb服务器正在运行,因为我可以通过noSQL工作台连接到它,但是我的假设是sam本地api的docker容器看不

  • 我有一个文件,其中包含用于、、和的服务: 当我运行并访问时,我会看到界面。当我尝试以或作为主机名,以作为端口创建一个新服务器时,我得到一个错误“Could not connect to server”。如果我删除这些,而是在“service”字段中输入,我会得到错误“definition of service”postgres“not found”。如何使用连接到数据库?

  • 我有 3 个码头工人撰写文件。一个启动Kafka,另外两个是消费者和生产者。在 kafka 中添加了其他 docker 撰写文件中的external_links,但仍然无法从容器内部访问 kafka。从容器外部,我可以通过 localhost:9092 访问,但是在 docker 容器内部呢?

  • 我拉出了mysql docker映像,并用命令运行容器: 此时,springBoot在本地工作。它与MySQL连接: 现在,我希望springBoot应用程序也在单独的docker容器上,在同一服务器上。为此,我使用了DockerFile: 同样,它无法连接到数据库:

  • 问题内容: 我有一个数据容器,该容器具有其他容器使用的卷(–volumes-from)。 数据容器被意外删除。 幸运的是,该卷没有删除。 有什么方法可以重新运行数据容器并将其指向该卷? 问题答案: 有什么方法可以重新运行数据容器并将其指向该卷? 当然,我在“如何从已删除的Docker容器中恢复数据?如何将其重新连接到数据?”中对此进行了详细说明。 您需要使用相同的VOLUME创建一个新容器(但 *

  • 我有一个数据容器,它有一个被其他容器使用的卷(-volumes from)。 数据容器意外被删除。 谢天谢地,卷没有被删除。 有什么方法可以重新运行数据容器并将其指向此卷?