【发布时间】:2017-12-07 18:47:27
【问题描述】:
假设我在运行 2 个容器/服务的 docker-compose 主机上:
- 后端 graphql(端口:8000:8000)
- 前端反应(端口:8081:8081)
在我的 react + apollo 代码所在的前端容器中,我需要设置这个常量:
// frontend container code
export const APOLLO = {
uri: 'http://0.0.0.0:8000/graphql' // << not working, what to use here?
};
但是,uri 值无法成功连接到后端 graphql 端点。我收到了诸如Error Network error: request to http://0.0.0.0:8000/graphql failed, reason: connect ECONNREFUSED 0.0.0.0:8000之类的错误消息
这些容器本身就可以正常工作。我可以导航到http://0.0.0.0:8000、http://0.0.0.0:8000/graphql、http://0.0.0.0:8081 与他们单独互动。我还可以使用ping backend 或ping frontend 进入每个容器并通过它们的服务名称空间到达另一个容器。
但是,当我在代码中执行 uri: 'http://backend:8000/graphql' 或 uri: 'http://backend/graphql' 时,我收到错误 Error Network error: only absolute urls are supported。
在docker inspect backend 上,我得到后端容器的 IP 地址为:'172.18.0.5'。我试图以uri: 'http://172.18.0.5/graphql' 插入uri,但我得到Error Network error: Network request failed with status 403 - "Forbidden"
在给定这些场景的情况下,我应该如何在代码中将后端 docker 容器连接到前端?
谢谢!
【问题讨论】:
-
添加
docker-compose.yml、Docker 版本、主机操作系统和任何支持的外部文件,以便我们重现。
标签: docker docker-compose graphql