You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M1上Docker容器部署的Elixir Web服务器无法访问排查

问题原因与解决方法

核心问题

容器内的Elixir Web服务器监听的是127.0.0.1:4000,这个地址是容器内部的回环地址,只能在容器内部访问。宿主机(你的MacBook M1)的端口映射是把宿主机端口转发到容器的公共网络接口,而非回环地址,所以外部无法访问。

解决步骤

  • 修改Elixir服务的监听地址为0.0.0.0,让服务监听容器所有可用的网络接口:
    • 若使用Phoenix框架:找到对应环境的配置文件(比如config/dev.exs或config/prod.exs),修改http配置的ip字段:
      config :your_app, YourAppWeb.Endpoint,
        http: [ip: {0, 0, 0, 0}, port: 4000],
        # 保留其他原有配置
      
    • 若为自定义Elixir服务器(比如用Plug.Cowboy):启动时指定监听IP为0.0.0.0:
      Plug.Cowboy.http YourRouter, [], ip: {0, 0, 0, 0}, port: 4000
      
  • 重新构建并启动容器:
    docker-compose down && docker-compose up --build
    
  • 验证:查看容器日志,确认服务监听地址变为0.0.0.0:4000,再执行curl localhost:4000测试,即可正常获取响应。

内容的提问来源于stack exchange,提问作者Zoey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 16:52:32