У меня есть два док-контейнера:
- база
- приложение, которое использует базу данных
Я запускаю свой контейнер базы данных так:
docker run --name my-db -p 127.0.0.1:3306:3306 my-db-image
И мой контейнер приложений выглядит так:
docker run --name my-app --network host -it my-app-image
Это прекрасно работает в Linux. Я могу получить доступ к БД как из хост-системы, так и из контейнера приложения. Совершенная.
Однако --network host
не работает на Mac и Windows:
Сетевой драйвер хоста работает только на хостах Linux и не поддерживается в Docker для Mac, Docker для Windows или Docker EE для Windows Server.
(источник: https://docs.docker.com/network/host/)
Я все еще могу получить доступ к базе данных через 127.0.0.1:3306
с основного хоста, но не могу получить к ней доступ из контейнера приложения.
Как я могу решить эту проблему? Как я могу позволить контейнеру приложения соединяться с базой данных (и продолжать обращаться к БД также с основного хоста, используя 127.0.0.1:3306
)?
Я пытался использовать host.docker.internal
и gateway.docker.internal
, но это не работает.
Я также пытался запустить оба контейнера, используя --network my-network
после создания my-network
с docker network create my-network
, но это не работает.
Я не могу понять, как решить эту проблему.