Доступ к службам Docker с хоста - PullRequest
4 голосов
/ 16 июня 2020

У меня есть простое веб-приложение с конфигурацией docker-compose.yml вроде этой:

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    ports:
      - "5432:5432"

Я могу получить доступ к службе базы данных в контейнере веб-приложения с помощью postgres://db:5432, потому что оба контейнера совместно используют сеть.

Я хочу получить доступ к службе базы данных с моего хост-компьютера, используя postgres://db:5432. Как сопоставить хост db:5432 из контейнера с db:5432 на моем локальном хост-компьютере? Я пробовал добавить 127.0.0.1:5432 db:5432 в свой /etc/hosts файл, который, похоже, не работает.

1 Ответ

4 голосов
/ 16 июня 2020

Файл /etc/hosts - это просто способ статического разрешения имен, когда DNS-сервер отсутствует или разрешен. Он не может отображать адреса портов. Ссылка: https://serverfault.com/questions/54357/can-i-specify-a-port-in-an-entry-in-my-etc-hosts-on-os-x

Он будет работать, если вы это сделаете,

127.0.0.1       db

Удалите порт, и он будет работать.

Кроме того, вы может напрямую обращаться к Postgres с localhost: 5432 с хост-машины.

...