Docker-compose - Как использовать второй интерфейс на хосте с 2 NIC
У меня есть проект cookiecutter django внутри экземпляра виртуальной машины, минимальный. Давайте назовем VM_D. Вот production.yml, который я пытаюсь запустить:
version: '2'
volumes:
caddy: {}
services:
django: &django
build:
context: .
dockerfile: ./compose/production/django/Dockerfile
depends_on:
- redis
env_file: .env
command: /gunicorn.sh
caddy:
build:
context: .
dockerfile: ./compose/production/caddy/Dockerfile
depends_on:
- django
volumes:
- caddy:/root/.caddy
env_file: .env
ports:
- "0.0.0.0:80:80"
- "0.0.0.0:443:443"
redis:
image: redis:3.0
celeryworker:
<<: *django
depends_on:
- redis
command: /start-celeryworker.sh
celerybeat:
<<: *django
depends_on:
- redis
command: /start-celerybeat.sh
Кроме того, у меня есть другой экземпляр виртуальной машины с запущенным postgres, но не внутри докера. Давайте назовем это VM_P.
Эти две виртуальные машины связаны друг с другом (я могу пинговать их друг от друга и даже использовать psql удаленно из VM_D), а у postgres нет доступа к Интернету (по соображениям безопасности). Таким образом, в основном, VM_D имеет две карты (en0 для внешнего доступа к Интернету и en1 для соединения с VM_P), а VM_P имеет только одну карту (для соединения с VM_D).
Я хочу иметь доступ к VM_P из контейнера Django. Я понимаю, что должен подключить "мост" по умолчанию к карте en1, но пока не могу сделать это без изменения соединения с en0.
Пытается
- Я пытался назначить сети "bridge" и "host" для django в production.yml и просто "bridge" для других, но не удалось сказать, что разрешена только одна "host" сеть.
- Я пытался назначить только "хост" для контейнеров django, соединение работает с VM_P, но другие контейнеры больше не имели соединения с django.
- Я проверил решение Pipework, но перед его использованием рекомендуется проверить "родной" способ.
Спасибо за помощь!