我已经将我的超级账本结构网络和我的客户端应用程序(使用fabric-sdk-go)部署在一台机器上(使用docker compose)并且一切正常,但是我正在尝试将我的网络与不同主机上的容器一起部署(使用一个带有 docker swarm 的覆盖网络)。此步骤有效,但我的客户端应用程序无法正常工作,因为它无法与不同主机上的容器通信。我认为问题与我的 config.yaml 文件中的实体匹配器部分有关。对于我的原始解决方案(单主机)实体匹配器设置如下:
entityMatchers:
peer:
- pattern: (\w*)peer0.org1.app.com(\w*)
urlSubstitutionExp: localhost:7051
eventUrlSubstitutionExp: localhost:7053
sslTargetOverrideUrlSubstitutionExp: peer0.org1.app.com
mappedHost: peer0.org1.app.com
- pattern: (\w*)peer1.org1.app.com(\w*)
urlSubstitutionExp: localhost:8051
eventUrlSubstitutionExp: localhost:8053
sslTargetOverrideUrlSubstitutionExp: peer1.org1.app.com
mappedHost: peer1.org1.app.com
orderer:
- pattern: (\w*)orderer.app.com(\w*)
urlSubstitutionExp: grpc://localhost:7050
sslTargetOverrideUrlSubstitutionExp: orderer.app.com
mappedHost: orderer.app.com
certificateAuthorities:
- pattern: (\w*)ca.org1.app.com(\w*)
urlSubstitutionExp: http://localhost:7054
mappedHost: ca.org1.app.com
对于我在多台主机上的解决方案,我在一台主机上设置了 ca 和 orderer,在其他主机上设置了 peer0 和 peer 1。我的问题是:如何将 localhost 替换为不同主机上相应容器的 url?(如果问题确实如此)
注意:我尝试将 localhost 更改为 docker 容器的名称,但没有成功