Переадресация портов через контейнеры - PullRequest
0 голосов
/ 10 декабря 2018

Я работаю над проектом django в целях обучения.Я создаю настройку docker-compose с контейнером db (просто postgresql с парой настроек) и контейнером web со стеком python-django.Вот упрощенная версия моего docker-compose.yml файла:

version: '3'
services:
  db:
    image: postgres
    expose:
      - "5432"
  web:
    build: .
    command: python /app/manage.py runserver 0.0.0.0:8000
    depends_on:
      - db

Это поднимает дБ.Я могу получить доступ к БД с моего хост-компьютера, что очень удобно, поскольку я могу легко просматривать базу данных и вносить некоторые изменения.

Я также могу использовать базу данных из экземпляра django в контейнере web, просто используя db в качестве имени хоста базы данных в конфигурации django.

Это означает, что если я хочу запустить тесты с хоста или запустить сервер и отладить его, я могу использовать localhost как хост базы данных, и он будет подключаться, и если я хочу запустить приложение в «производственном» режиме из контейнера web, я должен отредактировать настройки django, чтобы изменить хост базы данных.

Как мне справиться с этим несоответствием между «режимом отладки» и «производственным режимом»?Очевидно, я могу иметь флаг в файле настроек, который установлен или не зависит от переменной среды, или поместить само имя хоста db в переменную env, но это решение меня не совсем устраивает.

ПослеВ каком-то исследовании я наткнулся на этот старый вопрос , в ответе которого

Docker вскоре разрешит запустить контейнер, разделяющий пространство имен сети другого контейнера

и ссылки на эту очень интересную статью: Перемычки и программно-определяемый локальный хост

В соответствии с ними можно сослаться на порт localhost в контейнере web, азапрос будет перенаправлен на этот порт контейнера db.Ну, я думаю, что это то, что я хочу.Но я не могу найти никаких других ссылок о том, как это сделать.

Наконец, я хотел бы спросить, не переусердствую ли я в чем-то или делаю что-то принципиально неправильное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...