Как вы можете запустить сеанс iex и сервер phoenix, подключенный к одной и той же базе данных, и смешать среду в производственной среде? - PullRequest
0 голосов
/ 08 февраля 2019

Когда вы запускаете сервер типа MIX_ENV=prod mix phx.server, а затем на другом экране, подключенном к тому же серверу, пытаетесь запустить сеанс iex, связанный с микст-средой, например iex -S mix, вы получаете сообщение об ошибке и завершаете работу с жалобой типа Failed to start Ranch listener VukWeb.Endpoint.HTTP in :ranch_tcp:listen([port: 4000]) for reason :eaddrinuse (address already in use)

Есть ли способ запустить сеанс iex, когда сервер работает на отдельном экране, подключенном к той же базе данных?Я не понимаю, почему iex -S mix даже пытается подключиться к внешнему порту, так как в этом сеансе iex не должно быть ни одного запущенного сервера, ни внешнего порта просто для загрузки среды смешивания?

Я знаю, что вы можете запустить сервер с сеансом iex, таким как MIX_ENV=prod iex -S mix phx.server, но я понимаю, что это не идеально для производительности и не приятно, чтобы ваш сеанс iex прерывался потоками пользовательских журналов какзапросы обрабатываются (что мы и делаем сейчас).Я также попытался переключить порт, как MIX_ENV=prod PORT=4040 iex -S mix, но флаг, похоже, игнорируется, так как жалоба возвращается со ссылкой на порт 4000. Интересно, может быть, есть какое-то жесткое кодирование, вызывающее игнорирование переменной средыи, если просто отменить это жесткое кодирование и переключить его на другой порт, как этот, это правильный подход, даже если порт не используется средой несерверного микширования.

Если у кого-нибудь есть совет о том, как вы можете запустить сеанс iex и запустить службу - или у вас есть другое предложение для рабочего процесса, которое делает такое желание ненужным, - с удовольствием выслушаю!

Спасибо

1 Ответ

0 голосов
/ 08 февраля 2019

Mix имеет отличную очень подробную документацию.

Mix.Tasks.Run - это задание по умолчанию.iex -S -mix по существу эквивалентно iex -S mix run.

Последний запускает ваше приложение, которое [дикая разумная догадка] в свою очередь запускает cowboy как зависимость.Отсюда ошибка.

 iex -S mix run --no-start

- это то, что вы ищете.Эта задача принимает несколько аргументов, другие перечислены на странице справки, на которую я ссылаюсь.

...