Docker compose Hyperledger结构不适用于docker swarm

Docker compose Hyperledger结构不适用于docker swarm,docker-compose,blockchain,docker-swarm,hyperledger-fabric,docker-stack,Docker Compose,Blockchain,Docker Swarm,Hyperledger Fabric,Docker Stack,我正在使用Fabric 1.1 alpha版本,并尝试使用docker swarm进行设置。我正在使用docker compose文件和docker堆栈来部署容器 我遇到的问题是,我的链码侦听端口(在对等容器中的某处硬编码为7052)没有侦听docker swarm 如果我不使用docker swarm,同样的编写文件,只需稍作修改就可以了 我不确定是peer本身出了问题还是docker swarm出了问题 这是来自我的对等容器,它显然不允许在7052端口上进行任何连接 root@71c1b8f

我正在使用Fabric 1.1 alpha版本,并尝试使用docker swarm进行设置。我正在使用docker compose文件和docker堆栈来部署容器

我遇到的问题是,我的链码侦听端口(在对等容器中的某处硬编码为7052)没有侦听docker swarm

如果我不使用docker swarm,同样的编写文件,只需稍作修改就可以了

我不确定是peer本身出了问题还是docker swarm出了问题

这是来自我的对等容器,它显然不允许在7052端口上进行任何连接

root@71c1b8f22052:/opt/gopath/src/github.com/hyperledger/fabric/peer# telnet 10.0.0.6 7051
Trying 10.0.0.6...
Connected to 10.0.0.6.
Escape character is '^]'.
^CConnection closed by foreign host.
root@71c1b8f22052:/opt/gopath/src/github.com/hyperledger/fabric/peer# telnet 10.0.0.6 7052
Trying 10.0.0.6...
telnet: Unable to connect to remote host: Connection refused
root@71c1b8f22052:/opt/gopath/src/github.com/hyperledger/fabric/peer# telnet 10.0.0.6 7053
Trying 10.0.0.6...
Connected to 10.0.0.6.
Escape character is '^]'.
^CConnection closed by foreign host.
root@71c1b8f22052:/opt/gopath/src/github.com/hyperledger/fabric/peer# netstat -nalp | grep 7052
tcp        0      0 10.0.0.6:7052           0.0.0.0:*               LISTEN      7/peer         
但它在7052端口监听

root@71c1b8f22052:/opt/gopath/src/github.com/hyperledger/fabric/peer# telnet 10.0.0.6 7051
Trying 10.0.0.6...
Connected to 10.0.0.6.
Escape character is '^]'.
^CConnection closed by foreign host.
root@71c1b8f22052:/opt/gopath/src/github.com/hyperledger/fabric/peer# telnet 10.0.0.6 7052
Trying 10.0.0.6...
telnet: Unable to connect to remote host: Connection refused
root@71c1b8f22052:/opt/gopath/src/github.com/hyperledger/fabric/peer# telnet 10.0.0.6 7053
Trying 10.0.0.6...
Connected to 10.0.0.6.
Escape character is '^]'.
^CConnection closed by foreign host.
root@71c1b8f22052:/opt/gopath/src/github.com/hyperledger/fabric/peer# netstat -nalp | grep 7052
tcp        0      0 10.0.0.6:7052           0.0.0.0:*               LISTEN      7/peer         
当我实例化链码时,我在我的链码容器日志中得到了这一点

2018-02-06 09:45:11.886 UTC [bccsp] initBCCSP -> DEBU 001 Initialize BCCSP [SW]
2018-02-06 09:45:11.906 UTC [grpc] Printf -> DEBU 002 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp 10.0.0.10:7052: getsockopt: connection refused"; Reconnecting to {peer0.org1.example.com:7052 <nil>}
2018-02-06 09:45:12.905 UTC [grpc] Printf -> DEBU 003 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp 10.0.0.10:7052: getsockopt: connection refused"; Reconnecting to {peer0.org1.example.com:7052 <nil>}
2018-02-06 09:45:14.612 UTC [grpc] Printf -> DEBU 004 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp 10.0.0.10:7052: getsockopt: connection refused"; Reconnecting to {peer0.org1.example.com:7052 <nil>}
2018-02-06 09:45:14.904 UTC [shim] userChaincodeStreamGetter -> ERRO 005 context deadline exceeded
error trying to connect to local peer
github.com/hyperledger/fabric/core/chaincode/shim.userChaincodeStreamGetter
        /opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/shim/chaincode.go:111
github.com/hyperledger/fabric/core/chaincode/shim.Start
        /opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/shim/chaincode.go:150
main.main
        /chaincode/input/src/github.com/chaincode/alepomm/alepomm.go:355
runtime.main
        /opt/go/src/runtime/proc.go:195
runtime.goexit
        /opt/go/src/runtime/asm_amd64.s:2337
Error creating new Smart Contract: error trying to connect to local peer: context deadline exceeded
这真的很奇怪,如果我删除deploy部分(特定于堆栈),一切都会正常工作


我的n/w是覆盖类型n/w,范围为swarm

@yacovm,非常感谢你的帮助!问题是chaincode容器没有在与对等容器相同的网络上启动,因此无法连接到它。为了解决这个问题

核心\u对等\u链代码列表地址=0.0.0.0:7052


已添加到对等容器的环境中。现在它像个符咒一样工作了

你能不能把7051和7053这样的端口暴露出来?是的,这是我想到的第一件事,也试过了,但结果是一样的。甚至尝试禁用节点之间的TLS。只是在1.0.5上测试了相同的配置,并且它可以工作(尽管不是TLS)。所以这是alpha发行版的一个问题。抓住我(和这里的昵称相同),我会尽力调查你的情况