phoenix-framework - 如何在生产中运行连接到同一数据库和混合环境的 iex session 和 phoenix 服务器?

标签 phoenix-framework elixir-mix elixir elixir-iex

当您运行像 MIX_ENV=prod mix phx.server 这样的服务器,然后在连接到同一服务器的另一个屏幕上尝试运行像 iex -S 这样的混合环境附加 iex session 时mix 然后你会得到一个错误并关闭,并显示类似 Failed to start Ranch Listener VukWeb.Endpoint.HTTP in :ranch_tcp:listen([port: 4000]) for Reason :eaddrinuse (address already in use) 的投诉)

当服务器在附加到同一数据库的单独屏幕中运行时,是否有办法运行 iex session ?我很困惑为什么 iex -S mix 甚至尝试连接到外部端口,因为 iex session 应该没有服务器运行,也不需要外部端口来加载混合环境?

我知道您可以使用 iex session 运行服务器,例如 MIX_ENV=prod iex -S mix phx.server,但我的理解是,这对于性能来说既不理想,也不好在处理请求时,您的 iex session 被用户日志流中断(这就是我们现在正在做的事情)。我还尝试像 MIX_ENV=prod PORT=4040 iex -S mix 那样切换端口,但该标志似乎被忽略,因为投诉返回时与端口 4000 的引用相同。我是想知道是否可能有一些硬编码导致环境变量被忽略,并且只是撤消此硬编码并将其切换到像这样的不同端口是否是正确的方法,即使该端口被非服务器混合环境使用。

如果有人对如何同时运行 iex session 和服务有任何建议,或者对工作流程有不同的建议,使这种愿望变得不必要,我很乐意听到!

谢谢

最佳答案

Mix有完善非常详细的文档。

Mix.Tasks.Run是默认任务。 iex -S -mix 本质上等同于 iex -S mix run

后者启动您的应用程序,[疯狂合理的猜测]又将 cowboy 作为依赖项启动。因此出现错误。

 iex -S mix run --no-start

就是你要找的东西。此任务接受多个参数,其他参数列在我链接的帮助页面上。

关于phoenix-framework - 如何在生产中运行连接到同一数据库和混合环境的 iex session 和 phoenix 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54586215/

相关文章:

heroku - 连接到运行 heroku phoenix 应用程序

javascript - 无法在 vue.js 中读取 'Undefined' 的属性

elixir - 服务器启动时从文件读取并初始化 Phoenix 中的变量

elixir - 别名 IEX 中模块/命名空间的所有内容

elixir - 处理混合配置值

Elixir 的 `mix format` 配置选项

elixir - ExUnit 中 `let` 的模拟

javascript - 如何在不重新启动服务器的情况下更改 Javascript?

linux - 十六进制包在 Linux 上的位置

error-handling - 为什么 Elixir 中有两种指示错误的方式?