无法远程访问Azure网络中部署的Prefect Server问题求助
Prefect Server towel容器连接Hasura失败问题排查与解决
报错中的未知IP属于Docker内部网桥IP,问题根源是自定义服务端口后,端口绑定规则和内部服务通信配置不匹配,导致towel容器无法访问Hasura的3000端口。
1. 修复端口绑定限制
从docker ps结果可以看到,Hasura容器的端口仅绑定了127.0.0.1:5002->3000/tcp,只允许本地环回访问,Docker内部网络的其他容器无法通过网桥IP访问3000端口。
启动Prefect Server时添加--host 0.0.0.0参数,放开Docker内部网络的访问权限:
prefect server start --postgres-port=5433 --server-port=5001 --hasura-port=5002 --graphql-port=5003 --expose --host 0.0.0.0
2. 补全内部服务配置
自定义端口后需要同步修改~/.prefect/config.toml,添加Hasura服务的内部访问配置,避免towel容器使用默认参数寻址:
[server] endpoint = "http://你的Azure公网IP:5003/graphql" hasura_port = 5002 hasura_host = "hasura" # Prefect内部Docker网络的Hasura服务域名,无需填写公网IP [server.ui] apollo_url = "http://你的Azure公网IP:5003/graphql"
3. 重启验证修复效果
- 停止当前运行的Prefect服务:
prefect server stop - 清理残留的Prefect相关容器:
docker rm -f $(docker ps -a --filter name=tmp_* -q) - 使用修改后的启动命令重新启动服务
- 等待2分钟后执行
docker ps,确认tmp_towel_1容器状态变为healthy,再访问8080端口验证UI功能正常
内容的提问来源于stack exchange,提问作者caxefaizan
相关产品推荐
相关产品推荐

