I'm trying to instantiate Hyperledger Fabric Fabcar Nodejs chaincode but getting the below error.
/var/hyperledger/fabric-samples/chaincode/fabcar/typescript# peer chaincode instantiate \
-C mychannel -n fabcar -v 1.0 -l node -c '{"Args":[]}' \
-P "OR('Org1MSP.member','Org2MSP.member')"
[chaincodeCmd] InitCmdFactory -> INFO 001 Retrieved channel (mychannel) orderer endpoint: ord1.orderers:7050
[chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default escc
[chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default vscc
Error: could not assemble transaction, err proposal response was not successful, error code 500, msg error starting container: \
error starting container: Failed to generate platform-specific docker build: Error returned from build: 1 \
"cp: cannot stat '/chaincode/input/src/.': No such file or directory"
The marbles_2 got installed, instantiated, invoked and queried without issues. So I assume my set up is fine in Minikube (--vm-driver=none
option) Kubernetes cluster (using stable
helm charts).
This is how manifests look like:
apiVersion: v1
kind: ConfigMap
metadata:
name: peer0-hlf-peer--peer
labels:
app: hlf-peer
heritage: "Helm"
release: "peer0"
chart: hlf-peer-1.2.10
data:
CORE_PEER_ADDRESSAUTODETECT: "true"
CORE_PEER_ID: peer0
CORE_PEER_NETWORKID: nid1
# If we have an ingress, we set hostname to it
# Otherwise we use CORE_PEER_ADDRESSAUTODETECT to auto-detect its address
CORE_PEER_LISTENADDRESS: 0.0.0.0:7051
CORE_PEER_EVENTS_ADDRESS: 0.0.0.0:7053
CORE_PEER_COMMITTER_ENABLED: "true"
CORE_PEER_PROFILE_ENABLED: "true"
CORE_PEER_DISCOVERY_PERIOD: 60s
CORE_PEER_DISCOVERY_TOUCHPERIOD: 60s
CORE_PEER_LOCALMSPID: "Org3MSP"
CORE_PEER_MSPCONFIGPATH: /var/hyperledger/msp
###########
# Logging #
###########
# CORE_LOGGING_LEVEL:
CORE_LOGGING_PEER: "info"
CORE_LOGGING_CAUTHDSL: "warning"
CORE_LOGGING_GOSSIP: "info"
CORE_LOGGING_LEDGER: "info"
CORE_LOGGING_MSP: "warning"
CORE_LOGGING_POLICIES: "warning"
CORE_LOGGING_GRPC: "error"
FABRIC_LOGGING_SPEC: "info"
##########
# Gossip #
##########
CORE_PEER_GOSSIP_BOOTSTRAP: ""
CORE_PEER_GOSSIP_ENDPOINT: ""
CORE_PEER_GOSSIP_EXTERNALENDPOINT: ""
CORE_PEER_GOSSIP_ORGLEADER: "false"
CORE_PEER_GOSSIP_USELEADERELECTION: "true"
##########
# TLS #
##########
CORE_PEER_TLS_ENABLED: "false"
CORE_PEER_TLS_CERT_FILE: "/var/hyperledger/tls/server/pair/tls.crt"
CORE_PEER_TLS_KEY_FILE: "/var/hyperledger/tls/server/pair/tls.key"
CORE_PEER_TLS_ROOTCERT_FILE: "/var/hyperledger/tls/server/cert/cacert.pem"
CORE_PEER_TLS_CLIENTAUTHREQUIRED: "false"
# This is fixed prior to starting the peer
CORE_PEER_TLS_CLIENTROOTCAS_FILES: "/var/hyperledger/tls/client/cert/*"
CORE_PEER_TLS_CLIENTCERT_FILE: "/var/hyperledger/tls/client/pair/tls.crt"
CORE_PEER_TLS_CLIENTKEY_FILE: "/var/hyperledger/tls/client/pair/tls.key"
CORE_VM_ENDPOINT: unix:///host/var/run/docker.sock
CORE_LEDGER_STATE_STATEDATABASE: "CouchDB"
# Containers in the same pod share the host
CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS: couchdb-peer0-hlf-couchdb:5984
PEER_CFG_PATH: /var/hyperledger/config
FABRIC_CFG_PATH: /var/hyperledger/fabric_cfg
GODEBUG: "netdns=go"
ADMIN_MSP_PATH: /var/hyperledger/admin_msp
ORD_TLS_PATH: /var/hyperledger/tls/ord/cert
---
# Source: hlf-peer/templates/pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: peer0-hlf-peer
labels:
app: hlf-peer
heritage: "Helm"
release: "peer0"
chart: hlf-peer-1.2.10
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
---
# Source: hlf-peer/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: peer0
labels:
app: hlf-peer
heritage: "Helm"
release: "peer0"
chart: hlf-peer-1.2.10
spec:
type: ClusterIP
ports:
- port: 7051
targetPort: 7051
protocol: TCP
name: request
- port: 7053
targetPort: 7053
protocol: TCP
name: event
selector:
app: hlf-peer
release: peer0
---
# Source: hlf-peer/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: peer0-hlf-peer
labels:
app: hlf-peer
heritage: "Helm"
release: "peer0"
chart: hlf-peer-1.2.10
spec:
replicas: 1
selector:
matchLabels:
app: hlf-peer
release: peer0
# Ensure we allow our pod to be unavailable, so we can upgrade
strategy:
rollingUpdate:
maxUnavailable: 1
template:
metadata:
labels:
app: hlf-peer
heritage: "Helm"
release: "peer0"
chart: hlf-peer-1.2.10
spec:
volumes:
- name: data
persistentVolumeClaim:
claimName: peer0-hlf-peer
- name: dockersocket
hostPath:
path: /var/run/docker.sock
- name: id-cert
secret:
secretName: peer0-idcert
- name: id-key
secret:
secretName: peer0-idkey
- name: cacert
secret:
secretName: peer0-cacert
- name: tls
secret:
secretName: peer0-tls-pair
- name: tls-rootcert
secret:
secretName: org3-tls-cacert
- name: tls-client
secret:
secretName: peer0-tls-pair
- name: tls-clientrootcert
secret:
secretName: org3-tls-cacert
- name: admin-cert
secret:
secretName: peer0-admincert
- name: admin-key
secret:
secretName: peer0-adminkey
- name: ord-tls-rootcert
secret:
secretName: orderers-tls-cacert
hostname: peer0
subdomain: org3
containers:
- name: peer
image: "hyperledger/fabric-peer:1.4.3"
imagePullPolicy: IfNotPresent
ports:
- name: request
containerPort: 7051
protocol: TCP
- name: event
containerPort: 7053
protocol: TCP
livenessProbe:
exec:
command:
- ls
- /var/hyperledger
initialDelaySeconds: 5
periodSeconds: 5
# TODO: Improve readiness probe (ideally `ps aux | awk '$11=="orderer"'`)
readinessProbe:
exec:
command:
- ls
- /var/hyperledger
initialDelaySeconds: 15
command:
- bash
- -c
- |
# To avoid having separate secrets for CouchDB and HLF
export CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=$COUCHDB_USER
export CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=$COUCHDB_PASSWORD
while [ ! -d /var/hyperledger/admin_msp/admincerts ] || [ -z "$(ls -A /var/hyperledger/admin_msp/admincerts)" ];
do
echo "\033[0;31m /var/hyperledger/admin_msp/admincerts must contain Peer admin certificates files \033[0m"
sleep 60
done
while [ ! -d ${CORE_PEER_MSPCONFIGPATH}/signcerts ];
do
echo "\033[0;31m ${CORE_PEER_MSPCONFIGPATH}/signcerts directory must exist \033[0m"
sleep 60
done
if [ ! -d ${FABRIC_CFG_PATH} ]
then
mkdir -p ${FABRIC_CFG_PATH}
cp -r /etc/hyperledger/fabric/core.yaml ${FABRIC_CFG_PATH}
ls ${FABRIC_CFG_PATH}
fi
if [ $CORE_PEER_TLS_CLIENTAUTHREQUIRED ]
then
export CORE_PEER_TLS_CLIENTROOTCAS_FILES=$(ls -d $CORE_PEER_TLS_CLIENTROOTCAS_FILES)
fi
echo ">\033[0;35m peer node start \033[0m"
peer node start
envFrom:
- secretRef:
name: couchdb-peer0-hlf-couchdb
- configMapRef:
name: peer0-hlf-peer--peer
volumeMounts:
- mountPath: /var/hyperledger
name: data
- mountPath: /host/var/run/docker.sock
name: dockersocket
- mountPath: /var/hyperledger/msp/signcerts
name: id-cert
- mountPath: /var/hyperledger/msp/keystore
name: id-key
- mountPath: /var/hyperledger/msp/cacerts
name: cacert
- mountPath: /var/hyperledger/admin_msp/cacerts
name: cacert
- mountPath: /var/hyperledger/tls/server/pair
name: tls
- mountPath: /var/hyperledger/tls/server/cert
name: tls-rootcert
- mountPath: /var/hyperledger/tls/client/pair
name: tls-client
- mountPath: /var/hyperledger/tls/client/cert
name: tls-clientrootcert
- mountPath: /var/hyperledger/tls/ord/cert
name: ord-tls-rootcert
- mountPath: /var/hyperledger/admin_msp/admincerts
name: admin-cert
- mountPath: /var/hyperledger/admin_msp/signcerts
name: admin-cert
- mountPath: /var/hyperledger/msp/admincerts
name: admin-cert
- mountPath: /var/hyperledger/admin_msp/keystore
name: admin-key
resources:
{}