Как я могу устранить необходимость в двух док-контейнерах, которые работают вместе, чтобы использовать мостовую сеть?

У меня есть три докер-контейнера:

1: контейнер nginx доступен через порт 8080 и не использует мостовую сеть

2: контейнер xwiki, на котором запущен tomcat, доступен через порт 8080 с использованием сетевых мостов.

3: Контейнер Postgres, в котором размещается база данных xwiki и доступен через порт 5432 с использованием той же мостовой сети, что и контейнер xwiki.

Я хочу иметь возможность настроить nginx на обратный прокси-сервер и загрузить сайт xwiki по URL-адресу, такому как http://site-root/xwiki, но он не может этого сделать, так как он не находится в той же сети с мостом, и я получаю сообщение об ошибке «Нет маршрута к хосту»...

Все хосты доступны с удаленного хоста с использованием IP-адреса хоста докера и соответствующего порта контейнера...

Я создал контейнеры xwiki и postgres, которые не используют мостовую сеть, чтобы проверить это, но сервер xwiki tomcat дает сбой, поскольку xwiki не может найти сервер postgres, и я получаю следующую ошибку как исключение tomcat:

java.net.UnknownHostException: postgres-db-server

Можно ли устранить необходимость использования мостовой сети для контейнеров xwiki и postgres и заставить их обмениваться данными с использованием IP-адресов хостов докеров и их соответствующих номеров портов?

Я думаю, что мне может понадобиться отредактировать конфигурацию tomcat в контейнере xwiki, чтобы он указывал на сервер postgres, используя IP-адрес хоста docker и порт postgres по умолчанию...

Может ли кто-нибудь дать мне представление о том, похоже ли это на правильное решение или я что-то упустил в связи с необходимостью создания мостовой сети?

Я понимаю, что возможное решение состоит в том, чтобы настроить контейнер nginx на использование той же мостовой сети, но я также хочу, чтобы служба nginx могла использовать обратный прокси-сервер node.js, работающий на хосте докера... (не через докер)

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

Докер-хост работает на Centos 7.

Команды, используемые для ручного запуска контейнеров, как показано ниже:

Nginx

docker run -dti --name nginx-dev --hostname nginx-dev -p 80:80 -v /nginx/www:/usr/share/nginx/html:ro -v /nginx/conf:/etc/nginx -P -d nginx

Постгрес

docker run --net=xwiki-nw --name postgres-db-server -p 5432:5432 -v /postgres/data:/var/lib/postgresql/data -e POSTGRES_ROOT_PASSWORD=xwiki -e POSTGRES_USER=xwiki -e POSTGRES_PASSWORD=xwiki -e POSTGRES_DB=xwiki -e POSTGRES_INITDB_ARGS="--encoding=UTF8" -d postgres:9.5

Xвики

docker run --net=xwiki-nw --name xwiki -p 8080:8080 -v /xwiki:/usr/local/xwiki -e DB_USER=xwiki -e DB_PASSWORD=xwiki -e DB_DATABASE=xwiki -e DB_HOST=postgres-db-server xwiki:postgres-tomcat

person Community    schedule 08.09.2017    source источник
comment
Вы используете docker-compose или просто запускаете каждый контейнер вручную? Если вы используете compose, опубликуйте этот файл. Если вы используете контейнеры, перечислите все команды, которые вы выполнили   -  person Tarun Lalwani    schedule 09.09.2017
comment
@Tarun Lalwani Спасибо, я обновляю вопрос, чтобы включить информацию, которую вы запросили сейчас.   -  person    schedule 09.09.2017
comment
@Tarun Lalwani - я запускаю контейнеры вручную - я добавил команды, используемые в вопросе   -  person    schedule 09.09.2017
comment
Запустите docker network connect xwiki nginx-dev, и тогда ваш контейнер nginx сможет найти маршрут к двум другим контейнерам. Посмотрите, сможете ли вы заставить его работать после этой информации   -  person Tarun Lalwani    schedule 09.09.2017
comment
@Tarun Lalwani - Спасибо, Тарун, я выполнил команду, которая работает, но у меня все еще есть проблемы с обратным прокси-сервером nginx, но я думаю, что это проблема с конфигурацией nginx, поскольку теперь я могу разрешить URL-адрес контейнера xwiki, но nginx не передает порт 8080, поэтому страница tomcat загружается неправильно - я проведу некоторое тестирование и вернусь к этому - спасибо за вашу помощь!   -  person    schedule 09.09.2017


Ответы (1)


Бежать

docker network connect xwiki nginx-dev 

И тогда ваш контейнер nginx сможет найти маршрут к двум другим контейнерам.

person Tarun Lalwani    schedule 09.09.2017