Edeliver Запуск приложения Phoenix/Elixir на случайном порте TCP
Мы пытаемся развернуть наше приложение Phoenix Web App на виртуальной машине Linux (в нашем случае на Azure), используя edeliver
Мы развернули "базовое" приложение блога в Azure, используя edeliver
и задокументировали шаги: https://github.com/dwyl/learn-microsoft-azure
И когда мы вручную запускаем (" настоящее ") приложение: https://github.com/nelsonic/healthlocker для экземпляра, используя MIX_ENV=prod mix phoenix.server
работает нормально!
Когда мы развертываем и запускаем приложение в экземпляре Azure, используя следующие команды:
mix edeliver build release --verbose
mix edeliver deploy release to production
mix edeliver start production
Мы получаем положительное подтверждение:
EDELIVER HEALTHLOCKER WITH START COMMAND
-----> starting production servers
production node:
user : root
host : 51.140.86.5
path : /home/hladmin
response: ok
START DONE!
Однако когда мы бежим netstat -plnt
в соответствии с проверкой проверки запущенных служб на Linux мы заметили, что edeliver
запускает приложение Phoenix на случайном порте TCP:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:29130 0.0.0.0:* LISTEN 3759/mdsd
tcp 0 0 0.0.0.0:38863 0.0.0.0:* LISTEN 56269/beam.smp
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 32642/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1557/sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 16901/postgres
tcp6 0 0 :::4369 :::* LISTEN 32642/epmd
tcp6 0 0 :::22 :::* LISTEN 1557/sshd
В этом случае приложение работает на порт 38863
Думал наш prod.exs
Конфигурационный файл жестко запрограммирован ПОРТ для 4000
и у нас есть переменная среды, чтобы установить его 4000
в нашем .profile
файл согласно инструкции (на всякий случай).
Итак, мои вопросы:
Почему edeliver
запустить приложение Phoenix на случайном порте TCP...?
а также
Как я могу получить edeliver
загрузить приложение в ПОРТ 4000
?
наш .deliver/config
находится на GitHub.
Мы попытались прочитать журналы в /home/{username}/{appname}/var/log
в соответствии с инструкциями @dogbert в: Как просматривать производственные журналы в веб-приложении Phoenix, развернутом с использованием Edeliver? Но ни erlang.log.1
или же run_erl.log
сделал нас мудрее...:-(
Любая помощь в понимании этого будет высоко ценится! (Пожалуйста, спасибо!)
Примечание: К сожалению, хотя этот вопрос: Edeliver - Невозможно получить доступ к порту 4000 после успешного развертывания звучит похоже, решение не работает для нас (мы пытались)
1 ответ
Мне кажется, что вы не читали документацию по Phoenix для развертывания через релизы. Ликеро-водочный завод также имеет документацию для этого.
В сущности, это то, что вам нужно в вашей конфигурации:
config :healthlocker, Healthlocker.Endpoint
server: true,
root: ".",
version: Mix.Project.config[:version]
Убедитесь, что эти три параметра конфигурации установлены в вашем продукте config.exs
файл, и вы должны быть в порядке.