如何修改Hyperledger Composer REST服务器发行的卡中的connection.json文件

时间:2018-10-15 01:05:25

标签: rest docker hyperledger-fabric hyperledger hyperledger-composer

我按照教程Using Google OAUTH 2.0 with a REST server进行操作,以使用MongoDB Docker映像持久化商务网卡。 我正在尝试构建一个包含两个作曲家其余服务器的Web应用程序。

第一个没有身份验证,并且允许用户创建新的参与者和发行新的卡。

这时,经过身份验证(使用Google OAUTH2.0)的第二个作曲家REST服务器应允许用户执行所有其他操作。 无论如何,我一直收到错误:

  

尝试登录并获取用户上下文时出错。错误:尝试注册用户或加载频道配置时出错。错误:呼叫注册端点失败,并显示错误[错误:连接ECONNREFUSED 127.0.0.1:7054]

我几乎可以确定问题是由于REST服务器位于docker中,因此应更改名片中的文件connection.json,以便主机可以访问。

我已经对用于安装和启动网络的卡进行了此操作,因此该卡的文件为:

{"name":"hlfv1",
"x-type":"hlfv1",
"x-commitTimeout":300,
"version":"1.0.0",
"client":
{"organization":"Org1"
    ,"connection":
    {"timeout":
        {
            "peer":{"endorser":"300","eventHub":"300","eventReg":"300"},
            "orderer":"300"
        }
    }
},
"channels":
{"composerchannel":
    {
        "orderers":["orderer.example.com"],
        "peers":{"peer0.org1.example.com":{}}
    }
},

"organizations":
{
    "Org1":{
        "mspid":"Org1MSP",
        "peers":["peer0.org1.example.com"],
        "certificateAuthorities":["ca.org1.example.com"]
    }
},
"orderers":
{
    "orderer.example.com":
    {"url":"grpc://orderer.example.com:7050"}
},
"peers":
{
    "peer0.org1.example.com":
    {"url":"grpc://peer0.org1.example.com:7051"}
},
"certificateAuthorities":
{
    "ca.org1.example.com":
    {"url":"http://ca.org1.example.com:7054","caName":"ca.org1.example.com"}
}

}

但是我的问题是,如何为REST服务器发行的每张新卡更改此文件?有没有一种方法可以将REST服务器配置为自动执行此操作?

1 个答案:

答案 0 :(得分:0)

假设您在本地运行一个简单的Fabric(例如Composer Tools提供的Development Fabric),则可以利用Docker Port Forwarding连接到本地主机上的Fabric(通常为127.0.0.1)。但是,当您在Docker容器中运行时,localhost只会反射回该容器,因此不使用Docker主机上的端口转发。本教程为该容器创建了一个专用的“ restadmin”卡,该卡用包含Fabric容器的容器名称的URL替换了localhost URL,并且因为它们使用相同的Docker网络桥(composer_default),所以一切正常。

使用Composer REST服务器颁发身份时,将使用“当前” ID的Connection.json颁发新身份(和卡)。

因此,我想在您的情况下,您的第一个REST服务器(无身份验证)不在容器中本地运行,而第二个多用户REST服务器在容器中运行。因此,两个REST服务器的Fabric URL之间不匹配。

也许解决方案是在本地或作为容器运行它们,以便服务器之间的卡保持一致。