svisch
@svisch

Как получить доступ из docker контейнера к mysql на localhost?

Встала задача в нескольких версиях php на сервере. 8.2 установил просто на сервер, а вот 7.4 решил настроить через докер.
В docker-compose.yaml настроил проброс портов 9074:9000, в nginx сервера указал fastcgi_pass 127.0.0.1:9074 и вроде бы php 7,4 завелся, но сайт все равно выдает ошибку, связанную с подключением к бд. Думаю, что проблема в том, что php лежит в контейнере и не имеет доступа к внешнему mysql, расположенному на localhost.
Пробовал в docker-compose указывать и extra_hosts и host-mode - не помогло.
Может кто-то решал уже подобную задачу?
  • Вопрос задан
  • 1132 просмотра
Пригласить эксперта
Ответы на вопрос 2
syamskoy
@syamskoy
Хост машина доступна по адресу "host.docker.internal":
https://docs.docker.com/desktop/networking/#i-want...
Ответ написан
karabanov
@karabanov Куратор тега Docker
Системный администратор
Дело в том, что у каждого контейнера внутри свой loopback интерфейс с IP 127.0.0.1

Есть два пути, чтобы добиться желаемого.

Первый, убрать изоляцию с сети (network_mode: host), тогда всё просто заработает, но так делать не надо потому что на проде тебе никто не позволит так делать.

Второй, надо заставить MySQL слушать либо на 0.0.0.0 (то есть на всех интерфейсах) и подключаться к ней из контейнера по IP шлюза (его можно посмотреть в выводе docker inspect <container_name>), либо заставить MySQL слушать именно на одном IP который является шлюзом для контейнера.
Ответ написан
Ваш ответ на вопрос

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

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