RestAPI и Front-End на одном порту в Docker

Я создал новую каплю в DigitalOcean и установил Docker. У меня есть два контейнера: один с моим приложением NodeJS = RestAPI на порту 8080, а второй с Nginx, которые в основном предоставляют доступ к моим статическим html-файлам (с AngularJS) на порту 80.

Но теперь я хочу начать отправлять запросы из моего внешнего приложения AngularJS в приложение NodeJS, но через порт 80. Нравиться:

$http({
method: 'GET',
url: '/api/myapi'

Проблема: два контейнера Docker не могут использовать один и тот же порт (в данном случае 80).

Как я могу открыть веб-сервер RestAPI и Nginx на одном порту и в одном домене?

Идея состоит в том, чтобы делать запросы от AngularJS к собственному домену и тому же порту.


person Danny    schedule 16.04.2016    source источник


Ответы (1)


Одно из возможных решений — связать ваш контейнер NodeJS с контейнером Nginx и сопоставить порт 8080 с NodeJS на Nginx. Вам также необходимо поделиться файлами NodeJS с контейнером Nginx, смонтировав том из контейнера NodeJS в Nginx.

Затем создайте восходящий поток Nginx на порту 8080, чтобы он мог передавать запросы на этот порт. Затем добавьте правила в конфигурацию Nginx, чтобы при запросе любого статического файла nginx его обслуживал. Но для любого нестатического запроса передайте запрос восходящему потоку.

person hassansin    schedule 16.04.2016