结构样本中给出的应用程序未检测到 Hyperledger Fabric 测试网络的名称

The Name of Hyperledger Fabric Test Network is not detected by an Application given in the fabric samples

我刚刚根据 documentation.

从 Hyperledger Fabric 存储库重新安装了 Fabric Samples v2.2.0

但是当我尝试 运行 asset-transfer-basic 位于 fabric-samples/asset-transfer-basic/application-javascript 目录的应用程序时 运行ning node app.js 钱包被创建并且管理员和用户已经注册。但随后它尝试调用 app.js 中给出的函数并显示此错误

error: [Transaction]: Error: No valid responses from any peers. Errors:
    peer=peer0.org1.example.com:7051, status=500, message=error in simulation: failed to execute transaction 
aa705c10403cb65cecbd360c13337d03aac97a8f233a466975773586fe1086f6: could not launch chaincode basic_1.0:b359a077730d7
f44d6a437ad49d1da951f6a01c6d1eed4f85b8b1f5a08617fe7: error starting container: error starting container:
 API error (404): network _test not found

Response of a transaction to invoke a function

此错误以前从未发生过。但是不知何故,在重新安装 docker 和 Hyperledger Fabric fabric-samples 之后,它似乎永远找不到网络 _test

N.B。 : 在重新安装网络名称之前是 net_test。但现在当我尝试 docker network ls 时,它显示了一个名为 docker_test 的网络。我正在为 Linux (WSL) 版本 1 使用 Windows 子系统。

NETWORK ID     NAME          DRIVER    SCOPE
b7ac05456f46   bridge        bridge    local
acaa5856b871   docker_test   bridge    local
866f58b9078d   host          host      local
4812f94efb15   none          null      local

如何解决我尝试 运行 应用程序时出现的问题?

在我看来,CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE设置似乎是错误的。
你可以检查 docker-compose.yamlcore.yaml

1。 docker-compose.yaml

  • 我会根据你现在的情况说明fabric-samples/test-network是定位
  • 您可以在docker-compose.yaml
  • 签到CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE
  • 可能在你的情况下(fabric-samples/test-network),${COMPOSE_PROJECT_NAME}的值设置不正确,所以设置为_test
  • 确保值设置正确并将其更改为您的网络名称。
# hyperledger/fabric-samples/test-network/docker/docker-compose-test-net.yaml
# based v2.2
...
  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    image: hyperledger/fabric-peer:2.2
    environment:
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_test
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=docker_test
...

2。 core.yaml

如果没有在docker-compose.yaml peer中设置值,需要查看peer引用的core.yaml

您可以在core.yaml

中找到networkMode参数
# core.yaml
...
vm:
    docker:
        hostConfig:
            # NetworkMode: host
            NetworkMode: docker_test
...

如果两者均未设置,则设置为默认值。但是,如您所见 _test 被记录,两个部分之一设置了错误的值,您需要将该值更正为您想要的值。

我从别人那里复制了这个。这个对我有用!!

请在 docker-compose 文件所在的同一目录中创建一个名为“.env”的文件。在“.env”文件中添加以下行:-

COMPOSE_PROJECT_NAME=net

此问题与 docker 网络有关。完成@nezuko-response.

创建一个文件并将其命名为 ".env",位于 docker-compose 文件所在的同一目录中。
在其中添加以下行:

COMPOSE_PROJECT_NAME=net

使用 docker-compose up 使用新配置更新容器。

或关闭 HL 网络 (./network.sh down) 并启动 (./network.sh up),重新启动 test-nework.

否则即使在创建 ".env" 文件后你仍然会得到同样的错误。

关于docker networking

的更多解释

运行 ./network down 然后

export COMPOSE_PROJECT_NAME=net

之后

./network start

这对我有用

export COMPOSE_PROJECT_NAME=net