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

非容器化Nginx转发请求至Docker容器内应用失败问题排查咨询

错误根本原因

你的Sanic应用在容器内绑定的是容器本地回环地址127.0.0.1,这个地址仅能被容器内部进程访问,Docker端口映射无法将宿主机的请求转发到绑定回环地址的服务上。当你加--network=host参数时,容器共享宿主机网络栈,此时127.0.0.1就是宿主机的回环地址,所以能正常访问。

修复步骤

1. 修改Sanic服务绑定地址

打开yoomoney_payment_form/config.py,将HOST的值从127.0.0.1改为0.0.0.0,绑定容器内所有网卡地址,允许容器外的请求访问服务。
也可以直接修改__main__.py的启动代码:

app.run(host="0.0.0.0", port=PORT)

2. 重新构建Docker镜像

修改代码后重新执行镜像构建命令:

sudo docker build -t hello .

3. 重启容器

停止原有容器后用原启动命令重新运行即可:

# 先停止原有容器,替换<容器ID>为你的实际运行容器ID
sudo docker stop <容器ID>
# 重新启动新容器
sudo docker run -d -p 7772:7772 -v "$(pwd)"/db.sqlite3:/app/db.sqlite3 -v "$(pwd)"/config.ini:/app/config.ini hello

验证

启动完成后在宿主机执行curl http://127.0.0.1:7772/payment_form/1,返回Success字符串就说明配置生效,Nginx转发也会恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:15:00