Я предполагаю, что вы пытаетесь подключиться из другого контейнера / сервиса, определенного в docker-compose, и используете текущую версию docker-compose (2.4 или 3.7)
Вам необходимоизменить
DATABASE_URL=mysql://root:symf0ny@127.0.0.1:3306/iym
на
DATABASE_URL=mysql://root:symf0ny@mysql:3306/iym
Причина в том, что 127.0.0.1
ссылается на локальный хост машины, на которой работает php.В данном случае это контейнер php localhost.Но БД там не бегает.Он запускается в другом док-контейнере, доступ к которому можно получить под именем службы, в данном случае mysql
.
В Docker-Compose для сетевых документов написано :
По умолчанию Compose устанавливает единую сеть для вашего приложения.Каждый контейнер для службы присоединяется к сети по умолчанию и доступен для других контейнеров в этой сети и может быть обнаружен ими с именем хоста, идентичным имени контейнера.
, но услуга обнаруживается в соответствии симя контейнера (которое автоматически генерируется в projectName_serviceName_1
(имя проекта начинается с имени папки по умолчанию), но также и под именем службы, ссылка и псевдоним службы , если определено. Я бы рекомендовал использоватьимя службы везде, где это возможно.
Больше документов: https://docs.docker.com/compose/networking/