我正在使用docker-compose版本1.25.0,我有2个容器
api -使用python脚本和flask
apach -一些gui
我希望当我收到对api /test的curl请求时,它会重定向到每个容器gui internaly,这是api容器中的python代码:
@app.route('/test')
def test():
return redirect('apach:4822/#/myapp', code=302)如果我使用这段代码到我的主机外部return redirect('10.X.X.X:4822/#/myapp', code=302),它可以工作,但我希望重定向在内部容器之间,重定向不是这样工作的。
我试图从api容器对apach:4822/#/myapp执行curl,我确实看到它通过apach容器,但在我的python代码中没有,我得到代码302,页面不存在。
我怎么才能让它工作呢?谢谢。
发布于 2020-01-19 21:58:46
redirect('apach:4822/#/myapp', code=302)不工作的原因是名称apach只能在由docker-compose设置的docker网络内解析。
Flask正在向您的浏览器发送HTTP302代码,其中的Location标头设置为apach:4822/#/myapp。在运行浏览器的计算机上,无法解析apach。因此,您只需要使用外部可解析的IP。
由于您有多个想要向外部公开的服务,因此应该考虑设置一个反向代理服务器,如nginx。您可以将nginx作为容器本身运行。您可以使用nginx在不同的路由上公开您的服务。例如,您的api服务可以在/api/路径上公开,而apach容器可以在/myapp路径上公开。用户将连接到nginx服务器,nginx将根据所请求的URL将请求路由到适当的后端服务。当用户连接到/api/test时,您可以使用redirect('/myapp', code=302)重定向到/myapp。然后,nginx会将请求路由到apach服务。
https://stackoverflow.com/questions/59810646
复制相似问题