[英]How can you run an iex session and a phoenix server attached to the same database and mix environment in production?
当您运行像MIX_ENV=prod mix phx.server
这样的服务器,然后在连接到同一台服务器的另一个屏幕上尝试运行像iex -S mix
这样的混合环境附加 iex 会话时,您会收到错误并关闭,并出现类似Failed to start Ranch listener VukWeb.Endpoint.HTTP in :ranch_tcp:listen([port: 4000]) for reason :eaddrinuse (address already in use)
的抱怨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 会话应该没有服务器运行,也不需要外部端口来加载混合环境?
我知道你可以使用像MIX_ENV=prod iex -S mix phx.server
这样的 iex 会话来运行服务器,但我的理解是这对性能来说既不理想,也不会让你的 iex 会话被用户日志流中断随着请求的处理(这就是我们现在正在做的事情)。 我还尝试切换端口,如MIX_ENV=prod PORT=4040 iex -S mix
但该标志似乎被忽略了,因为投诉回来了,引用了端口 4000。我想知道是否有一些硬编码导致环境变量被忽略,如果只是撤消此硬编码并将其切换到不同的端口是正确的方法,即使非服务器混合环境未使用该端口也是如此。
如果有人有关于如何同时获得 iex 会话和服务运行的提示——或者对工作流程有不同的建议,使这种愿望变得不必要——希望听到!
谢谢
Mix
有完善的非常详细的文档。
Mix.Tasks.Run
是默认任务。 iex -S -mix
本质上等同于iex -S mix run
。
后者启动您的应用程序,[疯狂的合理猜测] 反过来将cowboy
作为依赖项启动。 因此错误。
iex -S mix run --no-start
就是你要找的。 此任务接受多个参数,其他参数列在我链接的帮助页面上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.