【问题标题】:Drupal database connection error with Docker - SQLSTATE[HY000] [2002]与 Docker 的 Drupal 数据库连接错误 - SQLSTATE[HY000] [2002]
【发布时间】:2017-01-06 17:19:42
【问题描述】:

Docker 新手,我正在尝试将其设置为 Drupal 7 项目的开发环境。运行docker-compose up 后访问localhost:8080 时遇到此错误:

Error

The website encountered an unexpected error. Please try again later.
Error messagePDOException: SQLSTATE[HY000] [2002] No such file or directory in lock_may_be_available() (line 167 of /var/www/html/includes/lock.inc).

似乎连接到我的数据库时出现问题。当我运行docker ps -a 时,我可以看到我的 2 个容器已启动并正在运行,因此它们似乎构建得很好。我的问题只是将我的 drupal 容器连接到 mysql 容器。

这是我的 docker-compose.yml 文件:

version: '2'

services:

  drupal:
    image: drupal:7.53-apache
    container_name: app
    volumes:
      - ./:/var/www/html
    ports:
      - '8080:80'
    links:
      - mysql

  mysql:
    image: mysql:5.6.35
    container_name: app_db
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_DATABASE: testdb

我是否忽略了连接两个容器的其他东西?非常感谢任何和所有帮助。谢谢!

【问题讨论】:

    标签: docker drupal drupal-7


    【解决方案1】:

    尝试映射正确的端口和 php DATABASE_HOST。对我来说这是可行的:

    db:
        image: dev/mysql
        ports:
            - "3306:3306"
        environment:
            MYSQL_DATABASE: testdb
            MYSQL_USER: root
            MYSQL_PASSWORD: root
    php:
        image: dev/alpine-nginx-php5.6
        environment:
            DATABASE_HOST: db
        ports:
            - "80:80"
            - "443:443"
        volumes:
            - ./SRC:/var/www/
        links:
            - db
    

    但我建议将您的数据库存储在 docker-container 之外。如果您必须重建或发生致命崩溃,所有内容都会被删除。

    【讨论】:

    • @hidace 在我忘记问之前:您是否更改了 drupal 内部 settings.php 中的配置。您必须使用“host”=>“db”或在您的情况下使用“host”=>“mysql”+所有凭据
    猜你喜欢
    • 2013-11-05
    • 1970-01-01
    • 2013-04-21
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 2013-11-06
    相关资源
    最近更新 更多