从另一个docker容器访问一个docker容器中的端点
我有一个docker compose文件,其中包含两个服务:从另一个docker容器访问一个docker容器中的端点,docker,curl,Docker,Curl,我有一个docker compose文件,其中包含两个服务:app和httpd 应用程序 httpd 烧瓶应用程序 app容器的端点如下所示: @app.route('/predict', methods=['GET']) def predict(): ...DO STH.... 我可以打开http://localhost:5001/predict在我的浏览器中,可以工作。。。 我可以从我的cmd:curl localhost:5001/predict,工作 但是当我在httpd容器中
app
和httpd
应用程序
httpd
烧瓶应用程序
app
容器的端点如下所示:
@app.route('/predict', methods=['GET'])
def predict():
...DO STH....
我可以打开http://localhost:5001/predict
在我的浏览器中,可以工作。。。
我可以从我的cmd
:curl localhost:5001/predict
,工作
但是当我在httpd
容器中时,这在控制台中不起作用:curl localhost:5001/predict
curl:(7)无法连接到本地主机端口5001:连接被拒绝
因此,我认为我在httpd
容器中寻址mysql时,我会寻址app
容器:curl-app:5001/predict
,但结果相同
有人知道我做错了什么吗?根据你的yaml:
ports:
- 5001:5000
根据您的yaml,集装箱内必须使用端口
5000
:
ports:
- 5001:5000
在容器内部,您必须使用端口
5000
在httpd
容器内部localhost
仅指该httpd
容器。默认情况下,它无法访问其他容器
另一件可能发生的事情是,你的应用程序没有打开进行“远程”访问。从一个容器到另一个容器的连接是远程连接
在docker中,您可以将多个容器相互连接
链接容器时,您可以使用curl通过使用
curl app:5001/predict
在httpd
containerlocalhost
中引用的httpd
容器来获取/predict>页面。默认情况下,它无法访问其他容器
另一件可能发生的事情是,你的应用程序没有打开进行“远程”访问。从一个容器到另一个容器的连接是远程连接
在docker中,您可以将多个容器相互连接
在链接容器时,您可以使用curl通过使用curl app:5001/predict
I do。。。它在第一句话中说我确实。。。它说在第一句话中,这为我指明了正确的方向,我必须使用容器端口(第二个)而不是主机端口(第一个)这为我指明了正确的方向,我必须使用容器端口(第二个)而不是主机端口(第一个)
ports:
- 5001:5000