gpt4 book ai didi

docker - 链接的 docker-compose 容器发出 http 请求

转载 作者:行者123 更新时间:2023-12-02 03:07:47 25 4
gpt4 key购买 nike

我在网上查找了一段时间,但没有找到类似于 StackOverflow 问题 Docker HTTP-requests between containers 的问题解决方案。 。但这个答案已经是我在计算机中所做的事情。我正在提供我的 docker-compose 文件

version: "3"
services:
web:
image: ecdavis15/tsn-web-server
ports:
- "3000:3000"
links:
- app
app:
image: ecdavis15/tsn-app-server
ports:
- "3030:3030"
links:
- mongo
mongo:
image: mongo
ports:
- "27017:27017"
volumes:
- ./data/db:/data/db

在我的网络容器中,我向 http://app:3030/historyhttp://app:3030/rules 发出 http get 请求,但我我没有看到请求找到到达应用程序容器的方式。我在浏览器控制台中看到的是此错误消息 net::ERR_NAME_NOT_RESOLVED。我不确定为什么 http 请求没有进入应用程序容器,因为它链接到了 Web 容器。有什么想法吗?

最佳答案

由于您进行 Ajax 调用,它将由客户端而不是服务器端的浏览器发送。因此,当您从 <IP>:3000 调用电话时至app:3030对于 API,您的浏览器不知道应用程序是什么。所以你能做的事情很少

使用主机文件

/etc/hosts

<IP> app 

然后当您使用 app:3000 浏览应用程序时, app:3030将自动指向正确的地址。

使用 javascript 确定 API url

您可以使用 javascript 获取应该用于 api 的 url

document.location.scheme + "://" + document.location.hostname + ":3030"

使用 nginx

您可以创建nginx反向代理

location / {
proxy_pass http://localhost:3000;

location /api {
proxy_pass http://localhost:3030;
}
}

这需要对您的代码文件进行一些更改,以便您使用 /api

关于docker - 链接的 docker-compose 容器发出 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46987726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com