Docker的Drupal数据库连接错误 - SQLSTATE [HY000] [2002]

时间:2017-01-06 17:19:43

标签: docker drupal drupal-7

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

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

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

1 个答案:

答案 0 :(得分:0)

尝试映射正确的端口和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之外。如果你必须重建或它有致命的崩溃,一切都将被删除。