Когда вы запускаете сервер типа 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 и запустить службу - или у вас есть другое предложение для рабочего процесса, которое делает такое желание ненужным, - с удовольствием выслушаю!
Спасибо