У меня есть три докер-контейнера:
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
docker network connect xwiki nginx-dev
, и тогда ваш контейнер nginx сможет найти маршрут к двум другим контейнерам. Посмотрите, сможете ли вы заставить его работать после этой информации - person Tarun Lalwani   schedule 09.09.2017