无法通过Drush从Drupal容器连接到MYSQL容器

时间:2020-07-25 19:19:55

标签: php mysql docker drupal-8 drush

很长一段时间以来,我一直试图找出这个问题,但我不得不承认我没有回应。

情况是这样:

docker-compose.yml

version: "3"

services:
  mysql:
    image: mysql:8.0
    container_name: mysql
    hostname: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: unless-stopped
    env_file: .env
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - internal

  drupal:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: drupal
    depends_on:
      - mysql
    restart: unless-stopped
    volumes:
      - ./web:/var/www/html/web:rw
      - ./vendor:/var/www/html/vendor:rw
      - ./drush:/var/www/html/drush
      - drupal-data:/var/www/html
      - ./php-conf/php.ini:/usr/local/etc/php/php.ini
    networks:
      - internal
      - external

  webserver:
    image: nginx:1.19.1-alpine
    container_name: webserver
    depends_on:
      - drupal
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
    volumes:
      - drupal-data:/var/www/html
      - ./web:/var/www/html/web:rw
      - ./nginx-conf/snippets/self-signed.conf:/etc/nginx/conf.d/snippets/self-signed.conf
      - ./nginx-conf/snippets/ssl-params.conf:/etc/nginx/conf.d/snippets/ssl-params.conf
      - ./nginx-conf/sites-available/default.conf:/etc/nginx/conf.d/default.conf
      - ./ca-certificates/qiminfo-docker.dev+4.pem:/etc/ssl/certs/qiminfo-docker.dev+4.pem
      - ./ca-certificates/qiminfo-docker.dev+4-key.pem:/etc/ssl/private/qiminfo-docker.dev+4-key.pem
    networks:
      - external

networks:
  external:
    driver: bridge
  internal:
    driver: bridge

volumes:
  drupal-data:
  db-data:

Dockerfile(仅适用于drupal容器)

FROM drupal:8.9.2-fpm-alpine

RUN apk add mysql-client && apk add openssh

我通过卷中的挂载文件管理所有依赖项(顺便说一句,效果很好),但是当我通过主机或容器运行drush时,它看不到Drupal实例(无论是root还是数据库),我都得到了在这种情况下的经典错误消息...

In BootstrapHook.php line 32:
                                                                      
  [Exception]                                                         
  Bootstrap failed. Run your command with -vvv for more information.

但是,我使用Dockerfile在drupal容器上安装了mysql-client并允许从drupal容器连接到mysql容器。当我尝试连接到mysql(具有“ mysql”主机名)容器数据库时,它就可以工作!

➜ docker exec -it drupal sh
/var/www/html # mysql -u drupal -p drupal -h mysql 
Enter password: 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.21 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [drupal]> 

问题是:

为什么drush无法访问mysql服务器容器,而mysql-cli可以正常工作?!

请帮助T-T

0 个答案:

没有答案