Управление и использование нескольких контейнеров Docker (микросервисов) на одном сервере

У меня есть сервер GCE (Google Compute Engine), работающий со списком веб-серверов Nginx/Apache на порту 80, который будет обслуживать веб-сайт. В то же время у меня есть несколько микросервисов, работающих на том же сервере, что и контейнеры Docker. Каждый контейнер будет обслуживать веб-сайт с соответствующим локальным IP-адресом, а я привязал его к localhost: PORT. Я не хочу привязывать порты к общедоступному IP-адресу, поскольку он будет публично раскрывать микросервисы внешнему миру.

Теперь проблема в том, что мне нужно встроить страницы веб-сайта, обслуживаемые контейнерами, на веб-сайт, который работает на порту 80 веб-сервера. Поскольку код вставки, который мы выполняли в браузере, я не могу использовать ни локальный IP-адрес (172.17.0.x), ни локальный хост:ПОРТ в коде python/HTML.

Теперь, как мне встроить страницы микросервисов, работающих локально внутри контейнеров, на веб-сайт, обслуживающий пользователей?

Например:

Общедоступный IP-адрес моего сервера: 104.145.178.114 Веб-сайт обслуживается с: 104.145.178.114:80 Внутри того же сервер, у нас есть несколько микросервисов, работающих с локальным IP-адресом, например 172.17.0.1 и 172.17.0.2 и т. д. . Внутри каждого контейнера будет работать сервер, который будет обслуживать страницы по адресу 172.17.0.1:8080/test.html и аналогично для других контейнеров. Теперь мне нужно встроить эту страницу test.html в другую веб-страницу, которая обслуживается веб-сервером Nginx/Apache по адресу 104.145.178.114, не открывая внутренний/локальный IP-порт. публике.

Я хотел бы услышать предложения и альтернативные решения этой проблемы


person Gowtham Sadasivam    schedule 06.04.2015    source источник
comment
Ребята, пожалуйста, задавайте вопросы, если вы не могли понять или если что-то не так в том, что я спросил. Простое голосование против моего вопроса на самом деле НЕ помогает.   -  person Gowtham Sadasivam    schedule 07.04.2015


Ответы (1)


Я предполагаю, что Nginx имеет доступ ко всем внутренним IP-адресам докеров (микросервисам). Если я что-то не упустил, proxy_pass (http://nginx.org/en/docs/http/ngx_http_proxy_module.html) должен вам подойти. Вы можете использовать определенный (доступный извне) шаблон URL-адреса для проксирования вашего контейнера микросервиса, не раскрывая порт микросервиса миру.

person cosmicnag    schedule 07.04.2015