'The chaincode container fails to connect to the peer container
I spin up a single-orderer-single-peer fabric instance in docker mode. The docker-compose file is like:
version: '2.1'
networks:
fabricsharp:
name: fabricsharp
services:
orderer.example.com:
container_name: orderer.example.com
image: hyperledger/fabric-orderer:2.2.0
environment:
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/genesis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP
- ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/msp/orderer/msp
- ORDERER_GENERAL_TLS_ENABLED=true
- ORDERER_GENERAL_TLS_CLIENTAUTHREQUIRED=false
- ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/msp/orderer/tls/server.key
- ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/msp/orderer/tls/server.crt
- ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/msp/orderer/tls/ca.crt, /etc/hyperledger/msp/peerOrg1/tls/ca.crt]
- ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/etc/hyperledger/msp/orderer/tls/server.key
- ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/etc/hyperledger/msp/orderer/tls/server.crt
- ORDERER_GENERAL_CLUSTER_ROOTCAS=[/etc/hyperledger/msp/orderer/tls/ca.crt]
- MV_STORE_PATH=/var/hyperledger/mv_store
- TXN_SPAN_LIMIT=${TXN_SPAN_LIMIT:-10}
- BLOCK_SIZE=${BLOCK_SIZE?err}
- CC_TYPE=${CC_TYPE?err}
working_dir: /opt/gopath/src/github.com/hyperledger/fabric
command: orderer
ports:
- 7050:7050
volumes:
- ./channel_artifacts/:/etc/hyperledger/configtx
- ./crypto_config/ordererOrganizations/example.com/orderers/orderer.example.com/:/etc/hyperledger/msp/orderer
- ./crypto_config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/:/etc/hyperledger/msp/peerOrg1
# - ./${LOG_DIR?err}:/etc/log
networks:
- fabricsharp
peer0.org1.example.com:
container_name: peer0.org1.example.com
image: hyperledger/fabric-peer:2.2.0
environment:
- FABRIC_LOGGING_SPEC=debug
# - FABRIC_LOGGING_SPEC=info
- CORE_CHAINCODE_LOGGING_LEVEL=debug
- CORE_PEER_ENDORSER_ENABLED=true
- CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:1.4.2
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabricsharp
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_ID=peer0.org1.example.com
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp/
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CLIENTAUTHREQUIRED=false
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt
- MV_STORE_PATH=/var/hyperledger/mv_store
- TXN_SPAN_LIMIT=${TXN_SPAN_LIMIT:-10}
- BLOCK_SIZE=${BLOCK_SIZE?err}
- CC_TYPES=${CC_TYPE?err}
- CORE_LEDGER_STATE_STATEDATABASE=${DB_TYPE:-goleveldb}
working_dir: /opt/gopath/src/github.com/hyperledger/fabric
command: peer node start
ports:
- 7051:7051
- 7052:7052
- 7053:7053
volumes:
- /var/run/:/host/var/run/
- ./crypto_config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/:/etc/hyperledger/msp/peer
# - ./${LOG_DIR?err}:/etc/log
# - channel_artifacts/channel.tx:/etc/hyperledger/configtx/mychannel.tx
# - crypto_config/ordererOrganizations/example.com/orderers/orderer.example.com/:/etc/hyperledger/msp/orderer
# - crypto_config/peerOrganizations/org1.example.com/users/:/etc/hyperledger/msp/users
depends_on:
- orderer.example.com
networks:
- fabricsharp
However, the contract instantiation fails. The peer logs
[31m2022-02-28 05:26:36.491 UTC [endorser] SimulateProposal -> ERRO 281[0m failed to invoke chaincode lscc, error: container exited with 0
The chaincode container logs
Error starting chaincode: connection error: desc = "transport: error while dialing: dial tcp: lookup peer0.org1.example.com: no such host"
My system and dependency's versions:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
$ docker --version
Docker version 20.10.12, build e91ed57
$ docker-compose --version
docker-compose version 1.27.3, build 4092ae5d
BUT STRANGE ENOUGH, our docker-mode Fabric works on less up-to-date system dependencies, which is
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic
$ docker --version
Docker version 18.06.3-ce, build d7080c1
$ docker-compose --version
docker-compose version 1.24.1, build 4667896b
I guess there are some issues on the chaincode container domain name resolution. By right, from the doc, the docker-compose sets up a network with bridge driver. And Each container for a service joins the default network and is both reachable by other containers on that network, and discoverable by them at a hostname identical to the container name.
However, the above does not hold with the new docker version, but works with the more outdated version. Any ideas from friends?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
