A identidade de erro do Hyperledger Composer não foi registrada uma vez emitida após a reinicialização

Estou usando o hyperledger compositor 0.16.0 e quero persistir os dados no banco de dados para que os dados possam ser usados mesmo após a reinicialização. então eu estou usandoloopback-connector-mongodb

Contexto

Eu tenho seguidoestatutorial e eu sou capaz de completá-lo.

Eu tenho o tecido de configuração emitindo as etapas abaixo

cd ${HOME}/fabric-tools/

 ./stopFabric.sh 
 ./teardownFabric.sh
./downloadFabric.sh
./startFabric.sh

cd ${HOME}/tmt/Profile/

composer card create -p connection.json -u PeerAdmin -c [email protected] -k 114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457_sk -r PeerAdmin -r ChannelAdmin

composer card import -f [email protected]

composer runtime install -c PeerAdmin@fabric-network -n dam-network

cd ../dam-network/

# added model.cto file below
composer archive create -t dir -n .

composer network start -c PeerAdmin@fabric-network -a [email protected] -A admin -S adminpw

composer card import -f [email protected]

composer network ping -c admin@dam-network

chmod -R 777 ${HOME}/.composer 

## onetime setup using npm install -g loopback-connector-mongodb
docker run -d --name mongo --network composer_default -p 27017:27017 mongo

cd ${HOME}/tmt/docker

docker build -t myorg/my-composer-rest-server .

#Which is attached below

source envvars.txt

docker run \
    -d \
    -e COMPOSER_CARD=${COMPOSER_CARD} \
    -e COMPOSER_NAMESPACES=${COMPOSER_NAMESPACES} \
    -e COMPOSER_AUTHENTICATION=${COMPOSER_AUTHENTICATION} \
    -e COMPOSER_MULTIUSER=${COMPOSER_MULTIUSER} \
    -e COMPOSER_PROVIDERS="${COMPOSER_PROVIDERS}" \
    -e COMPOSER_DATASOURCES="${COMPOSER_DATASOURCES}" \
    -v ~/.composer:/home/composer/.composer \
    --name rest \
    --network composer_default \
    -p 3000:3000 \
    myorg/my-composer-rest-server

Emito uma nova identidade para um participante existente e crio um cartão de visita para essa identidade com o seguinte comando

composer participant add -c admin@dam-network -d ' {"$class": "com.asset.tmt.User","userId": "tmtadmin","email": "[email protected]","firstName": "TMT","lastName": "Admin","userGroup": "peerAdmin"} ' 

composer identity issue -u tmtadmin -a com.asset.tmt.User#tmtadmin -c admin@dam-network 

composer card import -f [email protected]

Em seguida, importo esse cartão de visita via POST / wallet / import e posso chamar diferentes operações da API REST. Depois disso, paro o compositor-resto-servidor e, após alguns minutos, inicio o compositor-resto-servidor novamente com os comandos

cd ${HOME}/fabric-tools/
./startFabric.sh
docker start mongo rest

A emissão do comando acima não está funcionando, então estou matando o resto e executando-o novamente emitindo os comandos abaixo. Corrija-me se eu estiver enganado

 docker stop rest
 docker rm rest 
docker run \
    -d \
    -e COMPOSER_CARD=${COMPOSER_CARD} \
    -e COMPOSER_NAMESPACES=${COMPOSER_NAMESPACES} \
    -e COMPOSER_AUTHENTICATION=${COMPOSER_AUTHENTICATION} \
    -e COMPOSER_MULTIUSER=${COMPOSER_MULTIUSER} \
    -e COMPOSER_PROVIDERS="${COMPOSER_PROVIDERS}" \
    -e COMPOSER_DATASOURCES="${COMPOSER_DATASOURCES}" \
    -v ~/.composer:/home/composer/.composer \
    --name rest \
    --network composer_default \
    -p 3000:3000 \
    myorg/my-composer-rest-server

Em seguida, eu me autentico na API REST usando o mecanismo de autenticação configurado (no meu caso, estratégia passport-github) e se eu tentar chamar uma operação para a API REST, ele emitirá uma mensagem de erro Uma placa de rede comercial não foi especificada e importarei o cartão de visita anterior via POST / carteira / importação, obtendo um conteúdo sem o que deveria estar correto.

Finalmente, quando tento chamar outra operação da API REST, recebo o seguinte erro:

{
  "error": {
    "statusCode": 500,
    "name": "Error",
    "message": "Error trying login and get user Context. Error: Error trying to enroll user or load channel configuration. Error: Enrollment failed with errors [[{\"code\":400,\"message\":\"Authorization failure\"}]]",
    "stack": "Error: Error trying login and get user Context. Error: Error trying to enroll user or load channel configuration. Error: Enrollment failed with errors [[{\"code\":400,\"message\":\"Authorization failure\"}]]\n    at client.getUserContext.then.then.catch (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-connector-hlfv1/lib/hlfconnection.js:305:34)\n    at <anonymous>\n    at process._tickDomainCallback (internal/process/next_tick.js:228:7)"
  }
}
Comportamento esperado
This should work even after restart
Comportamento real
This is the main issue, I don't know why my identity is not being recognized by the REST API if I used it previously to call some operations.
Seu ambiente
* Version used: 0.16.0
* Environment name and version (e.g. Chrome 39, node.js 5.4):  chrome latest and node.js 8.9.1
* Operating System and version (desktop or mobile): Ubuntu desktop
My envvars.txt
COMPOSER_CARD=admin@dam-network
 COMPOSER_NAMESPACES=never
 COMPOSER_AUTHENTICATION=true
 COMPOSER_MULTIUSER=true
 COMPOSER_PROVIDERS='{
    "github": {
        "provider": "github",
        "module": "passport-github",
        "clientID": "xxxxxxxxxxxxx",
        "clientSecret": "xxxxxxxxxxxxxxxxxxxxx",
        "authPath": "/auth/github",
        "callbackURL": "/auth/github/callback",
        "successRedirect": "/",
        "failureRedirect": "/"
    }
}'
 COMPOSER_DATASOURCES='{
    "db": {
        "name": "db",
        "connector": "mongodb",
        "host": "10.142.0.10"
    }
}'
model.cto
/**
 * Model Definitions
 */
namespace com.asset.tmt

participant User identified by userId {
  o String userId
  o String email
  o String firstName
  o String lastName
  o String userGroup
}

asset Asset identified by assetId {
  o String assetId
  o String name
  o String creationDate
  o String expiryDate
}

transaction ChangeAssetValue {
  o String expiryDate
  o String assetId
  o String userId
}

atualizar:

Depois de seguir o que @R Thatcher disse, Quando eu emito um comandodocker-compose start , está iniciando a rede de malha, mas não a rede comercial implantada anteriormente.

tmt@blockchain:~/tmt/dam-network$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8a6833bd7d3a myorg/my-composer-rest-server "pm2-docker compos..." 17 hours ago Exited (0) 10 hours ago rest 9bffab63a048 mongo "docker-entrypoint..." 17 hours ago Exited (0) 10 hours ago mongo 5bafb4dd5662 dev-peer0.org1.example.com-dam-network-0.16.0-4a77c4c8eabde9e440464f91b1655a48c6c5e0dac908e36a7b437034152bf141 "chaincode -peer.a..." 17 hours ago Exited (0) 4 minutes ago dev-peer0.org1.example.com-dam-network-0.16.0 4bfc67f13811 hyperledger/fabric-peer:x86_64-1.0.4 "peer node start -..." 17 hours ago Up 6 minutes 0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp peer0.org1.example.com 762a42bc0eb7 hyperledger/fabric-orderer:x86_64-1.0.4 "orderer" 17 hours ago Up 6 minutes 0.0.0.0:7050->7050/tcp orderer.example.com 49c925a8cc43 hyperledger/fabric-couchdb:x86_64-1.0.4 "tini -- /docker-e..." 17 hours ago Up 6 minutes 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp couchdb cee51891308f hyperledger/fabric-ca:x86_64-1.0.4 "sh -c 'fabric-ca-..." 17 hours ago Up 6 minutes 0.0.0.0:7054->7054/tcp ca.org1.example.com

Qual é a maneira correta de abordar isso?

1) Quando tento iniciar a rede emitindo o comando abaixo

tmt@blockchain:~/tmt/dam-network$ composer network start -c PeerAdmin@fabric-network -a [email protected] -A admin -S adminpw
Starting business network from archive: [email protected]
Business network definition:
        Identifier: [email protected]
        Description: Blockchain dam integration

Processing these Network Admins: 
        userName: admin

✖ Starting business network definition. This may take a minute...
Error: Error trying to instantiate composer runtime. Error: No valid responses from any peers.
Response from attempted peer comms was an error: Error: chaincode error (status: 500, message: chaincode exists dam-network)

Command failed

2) Quando tento iniciar o contêiner do docker manualmente, emitindo o contêiner inicial do docker, ainda vejo que ele não está ativo.

questionAnswers(1)

yourAnswerToTheQuestion