Мережа за замовчуванням docker-контейнера — це міст (у тій самій локальній мережі, що й хост, але з окремою локальною IP), коли програма працює у продакшн-середовищі, потрібно лише налаштувати відповідну сервісну адресу для підключення до бази даних, redis тощо.
У середовищі розробки, якщо сервіс працює в Docker, а база даних — локально, налаштувати 127.0.0.1 непросто.
Це можна вирішити двома способами.
Рішення 1:
Розглядайте хост-машину та контейнер як дві окремі машини та налаштовуйте локальну або публічну IP-адресу хоста при налаштуванні адреси.
Рішення 2:
Запишіть адресу хоста безпосередньо як: host.docker.internal, однак.Другий метод вимагає версії Docker більшої за 18.03 і має бути доступний на Windows та Mac。
Щоб перевірити, чи ці два методи можуть отримати доступ до хоста, можна безпосередньо запустити образ за допомогою docker, щоб пінгувати командний рядок:
Як видно на зображенні вище, доступ до контейнерівhost.docker.internalВи можете отримати доступ до сервісу хоста, перевіривши файл /etc/hosts, ви побачите, що немає перенаправлення доменного імені, і ви не знаєте конкретного принципу docker.
І хост, і контейнер можуть отримати доступ до сервісів хоста через host.docker.internal, але адреса, яку повертає команда ping, відрізняється, а саме:
|