关于Hyperledger composer上REST持久数据存储的教程后面的错误

时间:2018-03-03 06:56:14

标签: hyperledger hyperledger-composer

https://i.imgur.com/nGh5orv.png

我在AWS ec2环境中进行设置。在尝试进行多用户模式之前,一切正常。

I am facing this issue where I had setup the mongoldb persistent data store following the tutorials.

这是我在envvars.txt上的设置

COMPOSER_CARD=admin@property-network
COMPOSER_NAMESPACES=never
COMPOSER_AUTHENTICATION=true
COMPOSER_MULTIUSER=true
COMPOSER_PROVIDERS='{
  "github": {
    "provider": "github",
    "module": "passport-github",
    "clientID": "xxxx",
    "clientSecret": "xxxx
    "authPath": "/auth/github",
    "callbackURL": "/auth/github/callback",
    "successRedirect": "/",
    "failureRedirect": "/"
  }
}'
COMPOSER_DATASOURCES='{
    "db": {
        "name": "db",
        "connector": "mongodb",
        "host": "mongo"   
    }
}'

我已将h1lfv1和admin @ xxx-network的连接配置文件更改为0.0.0.0,如此处所示。

https://github.com/hyperledger/composer/issues/1784

我在这里尝试了他的解决方案并且它不起作用。 谢谢!

1 个答案:

答案 0 :(得分:0)

目前管理员重新注册存在问题(严格来说是REST服务器的问题),即使管理卡有证书(它忽略了它 - 但在0.18.x中修复)。

此外,由于Docker需要能够从持久性REST服务器容器中解析容器名称,因此您需要解决主机名解析问题 - 我们需要更改主机名以表示docker resolvable主机名,因为它们当前设置为localhost值 - (示例显示了为了使用它启动REST服务器并使用标准而创建的新发布的' restadmin'卡'开发人员设置'作曲家环境):

  1. 创建REST Adninistrator身份restadmin和关联的业务网卡(稍后用于启动REST服务器)。

    composer participant add -c admin@property-network -d '{"$class":"org.hyperledger.composer.system.NetworkAdmin", "participantId":"restadmin"}'

  2. 发出' restadmin'身份,映射到上述参与者:

    composer identity issue -c admin@property-network -f restadmin.card -u restadmin -a "resource:org.hyperledger.composer.system.NetworkAdmin#restadmin"

  3. 导入并测试卡片:

    composer card import -f restadmin.card

    composer network ping -c restadmin@property-network

  4. 运行此单行程序可轻松执行分辨率更改:

    sed -e 's/localhost:/orderer.example.com:/' -e 's/localhost:/peer0.org1.example.com:/' -e 's/localhost:/peer0.org1.example.com:/' -e 's/localhost:/ca.org1.example.com:/' < $HOME/.composer/cards/restadmin@property-network/connection.json > /tmp/connection.json && cp -p /tmp/connection.json $HOME/.composer/cards/restadmin@property-network

  5. 尝试使用卡-c restadmin@property-network运行REST服务器 - 如果您正在运行此教程https://hyperledger.github.io/composer/latest/integrating/deploying-the-rest-server,则需要将此CARD NAME放在{{3}的顶部1}}然后确保您运行envvars.txt以便在当前的shell环境中设置它&#39;

  6. 如果您希望从REST客户端发出更多身份(例如下面的source envvars.txt - (目前为您提供#restadmin&#39;),您只需执行以下操作(首先两个也可以在Playground完成FYI):

    作曲家参与者添加-c admin @ trade-network -d&#39; {&#34; $ class&#34;:&#34; org.acme.trading.Trader&#34;,&#34; tradeId& #34;:&#34; trader2&#34;,&#34; firstName&#34;:&#34; Ken&#34;,&#34; lastName&#34;:&#34; Coe&#34;}& #39;

    作曲家身份问题-c admin @ trade-network -f kcoe.card -u kcoe -a&#34;资源:org.acme.trading.Trader #trader2&#34;

    作曲家卡片导入-f kcoe.card#导入卡片商店

  7. 下一步 - 从持久性dockerized REST服务器内部获取docker主机名解析权的单行:

    kcoe
    1. 按照Deploy REST server doc
    2. 启动REST服务器

      码头运行     -d \     -e COMPOSER_CARD = $ {COMPOSER_CARD} \     -e COMPOSER_NAMESPACES = $ {COMPOSER_NAMESPACES} \     -e COMPOSER_AUTHENTICATION = $ {COMPOSER_AUTHENTICATION} \     -e COMPOSER_MULTIUSER = $ {COMPOSER_MULTIUSER} \     -e COMPOSER_PROVIDERS =&#34; $ {COMPOSER_PROVIDERS}&#34; \     -e COMPOSER_DATASOURCES =&#34; $ {COMPOSER_DATASOURCES}&#34; \     -v~ / .composer:/home/composer/.composer \      - 名字休息     --network composer_default \     -p 3000:3000     MYORG /我的作曲家静止服务器

      1. http://localhost:3000/explorer中的系统REST API - 转到sed -e 's/localhost:/orderer.example.com:/' -e 's/localhost:/peer0.org1.example.com:/' -e 's/localhost:/peer0.org1.example.com:/' -e 's/localhost:/ca.org1.example.com:/' < $HOME/.composer/cards/kcoe@trade-network/connection.json > /tmp/connection.json && cp -p /tmp/connection.json $HOME/.composer/cards/kcoe@trade-network 操作并导入卡文件POST /wallet/import,其中(在这种情况下)卡名称设置为{{ 1}}然后点击“尝试一下”&#39;导入它 - 它应该返回一个成功的(204)响应。

      2. 通过系统REST API端点将其设置为电子钱包中的默认ID

      3. (如果您需要将任何进一步导入的卡片设置为我们的REST客户端电子钱包中的默认卡片名称 - 请转到kcoe.card方法并选择卡片名称并单击“试用它”。这将是默认卡)。

        1. 测试一下 - 尝试获取交易者列表(交易网络示例):
        2. 返回REST API客户端中的kcoe@trade-network方法并展开POST /wallet/name/setDefault/端点,然后点击“尝试”#39; 。它应该确认我们现在正在使用业务网络中的卡,并且应该能够与REST服务器交互并获得交易者列表(已添加到您的业务网络中)..