【发布时间】:2019-08-07 07:38:59
【问题描述】:
我似乎无法使用 Docker VPN 从网站向我的后端发送 http 请求。
我有这个 docker-compose 文件:
version: '3.7'
services:
frontend:
ports:
- 5001:5001
build: "./..."
restapi:
build: "./.../"
command: gunicorn rest.wsgi:application --bind 0.0.0.0:8000
expose:
- 8000
depends_on:
- db
db:
image: postgres:10.5-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
现在,我正在尝试从我的反应前端发送一个帖子请求
axios.post('http://restapi:8000/rest/', {data}, {headers})
--> 请求完全失败,永远无法访问我的 restapi 服务
如果我进入容器中的容器:docker exec -it "container-id" sh,然后向该 url 发送 wget(卷曲)请求,一切正常。
我假设,一旦网站在浏览器中运行,我就离开了容器,因此离开了 docker 的 VPN?
但我如何才能从反应前端跨容器发出请求?
【问题讨论】:
-
您是否正在从您的 IDE 测试 axios 调用?
-
后端是来自 docker-compose 的“restapi”服务。它有自己的容器,由 docker-compose 提供服务。
-
对不起,我改写了这个问题
-
我不确定我是否理解正确。 axios 调用由浏览器中的用户操作触发(现在:localhost)。如果我检查请求,则 url 不会解析为服务器 ip,但看起来像这样:restapi/rest
-
啊,你的意思是“来自我的反应前端”而不是后端,对吧?