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 файл, и вы должны быть в порядке.

Другие вопросы по тегам