从另一个docker容器访问一个docker容器中的端点

从另一个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容器中

我有一个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
容器中时,这在控制台中不起作用:
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
container
localhost
中引用的
httpd
容器来获取
/predict>页面。默认情况下,它无法访问其他容器

另一件可能发生的事情是,你的应用程序没有打开进行“远程”访问。从一个容器到另一个容器的连接是远程连接

在docker中,您可以将多个容器相互连接


在链接容器时,您可以使用curl通过使用
curl app:5001/predict

I do。。。它在第一句话中说我确实。。。它说在第一句话中,这为我指明了正确的方向,我必须使用容器端口(第二个)而不是主机端口(第一个)这为我指明了正确的方向,我必须使用容器端口(第二个)而不是主机端口(第一个)
ports:
    - 5001:5000