Dokku: слушайте несколько портов из приложения

Я развертываю приложение node (с экспресс-js) с помощью dokku. Мое приложение состоит из 2 экспресс-приложений js, которые прослушивают два разных порта. Одно из них является основным приложением, а другое — веб-интерфейсом для kue — простой очереди заданий для узла js. Когда я развертываю приложение, мне нужно запустить оба этих приложения и получить доступ к основному приложению через порт 80, а к одному через какой-либо другой порт (предпочтительно к порту, который прослушивает экспресс-приложение).

Я поместил оба этих приложения в Procfile, например:

web: server=thats-wow NODE_ENV=production node server/app.js
worker: node server/kueUi.js

Несколько процессов в procfile обрабатываются подключаемым модулем dokku-supervisord: https://github.com/statianzo/dokku-supervisord (Он поддерживает все типы процессов: веб, рабочий и т. д.).

Я пробовал как «веб», так и «рабочий» для типа процесса второго приложения.

Проблема

При развертывании Dokku просто делает последнее приложение, указанное в procfile (в данном случае kueUi), доступным через порт 80, и кажется, что нет никакого способа получить доступ к тому, которое указано первым. Я попытался получить доступ через порт, который слушает первое приложение, но это не сработало.

Я предполагаю, что ему нужна некоторая конфигурация nginx для пересылки запросов на определенный порт на этот порт в контейнере докеров, который прослушивает приложение.

Как мне это нужно

1. http://example.com - reaches my main app
2. http://example.com:5000 - reaches the second app (Kue UI)

Не удалось найти документацию о том, как этого добиться. Любая помощь высоко ценится!


person Jithesh    schedule 07.08.2014    source источник
comment
Удалось ли вам найти обходной путь?   -  person Sergio    schedule 10.10.2015
comment
Не пробовал, но: stackoverflow.com/a/35510401/856468   -  person malix    schedule 19.02.2016


Ответы (2)


Это можно взломать вместе с помощью https://github.com/statianzo/dokku-shoreman или https://github.com/statianzo/dokku-supervisord, но вам нужно вручную убедиться, что на хосте dokku нет коллизий портов.

Когда https://github.com/progrium/dokku/issues/732 разрешено, вы сможете развернуть второе приложение в качестве рабочего, которое будет прослушивать порт, назначенный докером.

person Motin    schedule 29.10.2014

Я не уверен, что неправильно понял проблему, но может помочь узнать конечные точки обоих приложений? Это делается так:

dokku url [App #1]
dokku url [App #2]

Если вы используете nginx, вы можете посмотреть /opt/nginx/conf/nginx.conf.

person logicalicy    schedule 11.10.2014