'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