Задать вопрос
alexanderbulatov
@alexanderbulatov
Fullstack разработчик

Как исправить ошибку SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution?

Доброго времени суток!

Пытаюсь развернуть приложение на yii2 basic в docker-е.
Появляется ошибка SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution.

Мои файлы:

docker-compose.yml
version: '3.5'
services:
  php:
    image: yiisoftware/yii2-php:7.4-apache
    volumes:
      - ~/.composer-docker/cache:/root/.composer/cache:delegated
      - ./:/app:delegated
    ports:
      - '8000:80'
    depends_on:
      - db
  db:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=verysecret
      - MYSQL_DATABASE=mdb
      - MYSQL_USER=yii2
      - MYSQL_PASSWORD=secret
    ports:
      - '33061:3306'
    volumes:
      - ./mysql-dump:/etc/dump


файл ./config/db.php
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=mysql;dbname=mdb',
    'username' => 'root',
    'password' => 'verysecret',
    'charset' => 'utf8mb4',
    'tablePrefix' => 'dtl_',

    // Schema cache options (for production environment)
    //'enableSchemaCache' => true,
    //'schemaCacheDuration' => 60,
    //'schemaCache' => 'cache',
];


Буду благодарен за любую мысль по поводу решения этой проблемы и особенно за решение.

UPD. Да, действительно название сервиса в compose файле должен быть тем самым хостом к которому мы обращаемся. То есть параметр dsn в файле ./config/db.php должен быть таким:
mysql:host=db;dbname=mdb
Но у меня всё равно появляется ошибка, но другая. Вот она:
SQLSTATE[HY000] [2002] Connection refused

UPD2. Если добавить имя контейнеру принудительно (параметр в сервисе db container_name), то будет ошибка:
Forbidden
You don't have permission to access this resource.
  • Вопрос задан
  • 11605 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
planc
@planc
у тебя у контейнера имя db, а в конфиге mysql ты подключаешься к хосту mysql

'dsn' => 'mysql:host=mysql;dbname=mdb',
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы