dockerhyperledger-fabricdev-mode

Port error when setting up Dev mode of Hyperledger Fabric


I'm setting up the development environment following the instructions on Hyperledger fabric's official website: https://hyperledger-fabric.readthedocs.io/en/latest/peer-chaincode-devmode.html I have started the orderer successfully using:

ORDERER_GENERAL_GENESISPROFILE=SampleDevModeSolo orderer

This command didn't work at first but it worked after I cd fabric/sampleconfig

2020-12-21 11:23:15.084 CST [orderer.common.server] Main -> INFO 009 Starting orderer:  Version: 2.3.0  Commit SHA: dc2e59b3c  Go version: go1.15.6  OS/Arch: darwin/amd64 
2020-12-21 11:23:15.084 CST [orderer.common.server] Main -> INFO 00a Beginning to serve requests

but when I start the peer using:

export PATH=$(pwd)/build/bin:$PATH 
export FABRIC_CFG_PATH=$(pwd)/sampleconfig
export FABRIC_LOGGING_SPEC=chaincode=debug
export CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
peer node start --peer-chaincodedev=true

An error is spotted:

FABRIC_LOGGING_SPEC=chaincode=debug 
CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
peer node start --peer-chaincodedev=true

2020-12-21 11:25:13.047 CST [nodeCmd] serve -> INFO 001 Starting peer:  Version: 2.3.0 Commit SHA: dc2e59b3c Go version: go1.15.6 OS/Arch: darwin/amd64 Chaincode: Base Docker Label: org.hyperledger.fabric   Docker Namespace: hyperledger
2020-12-21 11:25:13.048 CST [peer] getLocalAddress -> INFO 002 Auto-detected peer address: 10.200.83.208:7051 
2020-12-21 11:25:13.048 CST [peer] getLocalAddress -> INFO 003 Host is 0.0.0.0 , falling back to auto-detected address: 10.200.83.208:7051  Error: failed to initialize operations subsystem: listen tcp 127.0.0.1:9443: bind: address already in use

this is the error:

Error: failed to initialize operations subsystem: listen tcp 127.0.0.1:9443: bind: address already in use

I checked this issue and it seems this happens because the peer node is using the same port 9443 as the orderer node for the same service. How can I get the two nodes running separately? It seems the docker is running as well.


Solution

  • If you see your error, you can easily follow
    Error: failed to initialize operations subsystem: listen tcp 127.0.0.1:9443: bind: address already in use
    It is said that the 9443 port is already in use.


    It seems that you are not running the orderer and peer as separate containers on the docker-based virtual network, but running on the host pc.
    This eventually seems to conflict with two servers requesting one port 9443 on your pc.\


    Referring to the configuration below of fabric-2.3/sampleconfig, you can see that each port 9443 is assigned to the server. Assigning one of them to the other port solves this.

    fabric-2.3/sampleconfig/orderer.yaml

    configuration of orderer

    # orderer.yaml
    ...
    Admin:
        # host and port for the admin server
        ListenAddress: 127.0.0.1:9443
    ...
    

    fabric-2.3/sampleconfig/core.yaml

    configuration of peer

    # core.yaml
    ...
    operations:
        # host and port for the operations server
        # listenAddress: 127.0.0.1:9443
        listenAddress: 127.0.0.1:10443
    ...