Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接Docker容器:前端通过同一主机上的Docker Compose连接到GraphQL后端_Docker_Docker Compose_Graphql - Fatal编程技术网

连接Docker容器:前端通过同一主机上的Docker Compose连接到GraphQL后端

连接Docker容器:前端通过同一主机上的Docker Compose连接到GraphQL后端,docker,docker-compose,graphql,Docker,Docker Compose,Graphql,假设我在主机上,docker compose运行2个容器/服务: 后端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? };

假设我在主机上,docker compose运行2个容器/服务:

  • 后端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:'http://0.0.0.0:8000/graphql“//通过在本地运行服务器(而不是Docker)修复了此问题,发现后端拒绝前端条目,因为未设置CORS标头。将前端的ip列为白名单,并且它正常工作。使用后端ip在Docker容器中再次测试
http://172.18.0.5/graphql
连接非常完美

希望这有帮助


编辑:在url主机名中引用容器名称,即
http://backend/graphql由于docker compose设置了docker网桥,因此也能正常工作。这是一个比硬编码上述docker容器ip更好的解决方案。

这是一个在节点获取无法访问协议时出现的问题或主机名

if(!parsedURL.protocol | | |!parsedURL.hostname){
抛出新类型错误(“仅支持绝对URL”);
}
根据graphql后端处理查询的方式,最好注销每个服务端点的URL,并确保URL包含主机和协议,否则获取将失败


对于我自己来说,当我的主机变量作为
未定义的

添加
docker compose.yml
、docker版本、主机操作系统和任何支持的外部文件从我的服务端点的ENV返回时,就发生了这个错误,这样我们就可以复制。