docker -compose drupal mysql SQLSTATE [HY000] [2002] Нет такого файла или каталога - PullRequest
0 голосов
/ 01 апреля 2020

Я перепробовал все решения, доступные во всех формах, но безуспешно, даже пытался использовать принятые ответы docker -составить файл, но все еще получал ту же ошибку.

enter image description here

Я пробую это на только что установленной Ubuntu 18 на VirtualBox. Я пытался со всеми возможными комбинациями localhost, 127.0.0.1, смена пользователя и т. Д. c.

Docker version 19.03.6, build 369ce74a3c
docker-compose version 1.25.4, build 8d51620a

docker -compose.yaml

version: '3.1'
services:
  drupal:
    image: drupal:8
    container_name: drupal_container
    environment:
     DRUPAL_PROFILE: standard
     DRUPAL_SITE_NAME: Drupal
     DRUPAL_USER: user
     DRUPAL_PASS: pass
     DRUPAL_DBURL: mysql://user:pass@database:3306/db
    #or mysql://user:pass@mysql_container:3306/db tried with both
    links:  
     - "mysql:mysql"
    depends_on:
     - mysql
    ports:
     - 80:80
    restart: always
    volumes:
     - /var/www/html/modules
     - /var/www/html/profiles
     - /var/www/html/themes
     - /var/www/html/sites
    restart: always
  mysql:
    image: mysql:5.7
    container_name: mysql_container
    restart: always
    environment:
     MYSQL_ROOT_PASSWORD: root
     MYSQL_DATABASE: db
     MYSQL_USER: user
     MYSQL_PASSWORD: pass
    ports:
     - 3306:3306
    expose:
     - 3306

Я могу подключить MySQL через командную строку и команду docker exe c

sudo mysql --protocol=TCP -h127.0.0.1 -p3306 -uroot -proot
sudo mysql --protocol=TCP -h127.0.0.1 -p3306 -uuser -ppass
sudo mysql --protocol=TCP -hlocalhost -p3306 -uroot -proot
sudo mysql --protocol=TCP -hlocalhost -p3306 -uuser -ppass
docker-compose exec mysql mysql -uroot -proot -e "Show databases;"
docker-compose exec mysql mysql -uuser -ppass -e "Show databases;"

Как это исправить?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Я приложил рабочий файл compose, у вас, похоже, отсутствует сеть, через которую должны быть подключены докеры.

Создание общей сети для ваших контейнеров

docker network create shared
version: '3.1'
networks:
  shared: 
    external:
      name: shared
services:
  drupal:
    image: drupal:8
    container_name: drupal_container
    environment:
     DRUPAL_PROFILE: standard
     DRUPAL_SITE_NAME: Drupal
     DRUPAL_USER: user
     DRUPAL_PASS: pass
     DRUPAL_DBURL: mysql://user:pass@mysql:3306/db    # MySQL host should be same as service name created for mysql.
    #or mysql://user:pass@mysql_container:3306/db tried with both
    links:  
     - "mysql:mysql"
    depends_on:
     - mysql
    ports:
     - 80:80
    restart: always
    volumes:
     - /var/www/html/modules
     - /var/www/html/profiles
     - /var/www/html/themes
     - /var/www/html/sites
    networks:
      - shared
  mysql:
    image: mysql:5.7
    container_name: mysql_container
    restart: always
    environment:
     MYSQL_ROOT_PASSWORD: root
     MYSQL_DATABASE: db
     MYSQL_USER: user
     MYSQL_PASSWORD: pass
    ports:
     - 3306:3306
    expose:
     - 3306
    networks:
      - shared

Когда вы пытаетесь настроить базу данных в drupal, используйте следующее значение для хоста, остальные должны быть такими же, как вы используя.

Host: mysql

Кроме того, вы можете просто изменить значение 'DRUPAL_DBURL' в вашем файле композиции. Таким образом, вы используете сеть по умолчанию, созданную docker compose.

DRUPAL_DBURL: mysql://user:pass@mysql:3306/db
0 голосов
/ 04 апреля 2020

это сработало, не так, как я ожидал, но сработало.

sudo docker inspect mysql_container

op ->

"Gateway": "172.22.0.1",
"IPAddress": "172.22.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:16:00:02",
"DriverOpts": null

Я пытался с этим IP добавить ie "IPAddress": "172.22.0.2" drupal и Команды ниже могут подключаться

sudo mysql --protocol=TCP -h172.22.0.2 -p3306 -uroot -proot
sudo mysql --protocol=TCP -h172.22.0.2 -p3306 -uuser -ppass

, но все же хотели бы знать, каково значение этого IP-адреса, чем он отличается от localhost или 127.0.0.1 и будет ли он оставаться неизменным каждый раз Я тяну одно и то же изображение на разных машинах или оно меняется ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...