Вы правы здесь, но это только часть истории.
Я обнаружил на CloudFoundry Docker, что единственное, что мне нужно сделать, это включить EXPOSE 1883 в мой Dockerfile.
Когда ваш образ запускается Cloud Foundry, он ожидает, что ваше приложение будет прослушивать определенный порт.Обычно CF сообщает вашему приложению порт, на котором оно должно прослушиваться, через переменную $PORT
env.С помощью Docker вы можете указать этот порт, добавив EXPOSE
в ваш файл Docker и указав используемый порт.CF прочитает эту информацию и будет использовать указанный вами порт вместо того, чтобы выбирать один для использования.
Этого должно быть достаточно для запуска приложения, прослушивания согласованного порта и проверки Cloud Foundry для проверки работоспособности.проверьте к вашему заявлению.Другими словами, этого должно быть достаточно для успешного запуска приложения.Если ваше приложение не проходит проверку работоспособности, вам нужно подтвердить, что ваше приложение действительно запускается и прослушивает порт.Кроме того, как упоминалось в комментариях выше, убедитесь, что он не прослушивает localhost
или 127.0.0.1
.Они не доступны вне самого приложения, даже для проверки работоспособности.
Другая часть головоломки здесь - отображение внешнего трафика на ваше приложение.Порт, который ваше приложение прослушивает внутри контейнера, не отображается за пределами этого контейнера.Чтобы направить трафик в ваше приложение, вам необходимо сопоставить маршрут с вашим приложением.Типичные маршруты для CF основаны на HTTP, поэтому я не верю, что они будут работать для MQTT.Вам нужно было бы специально сопоставить маршрут TCP с вашим приложением.
Пример: cf map-route my-app example.com --port 5000
Для этого требуется открытый внешний порт TCP, который, вероятно, не будет 1883 (полностью зависит от того, что ваш провайдер делает доступным), и направляет трафик навнутренний порт, на котором слушает ваше приложение.Ваши клиенты, которые хотят подключиться к приложению на CF, должны подключиться к подключенному общему / внешнему порту.См. Диаграмму здесь для получения более подробной информации.
Надеюсь, это поможет!