hyperledger fabric - docker 容器错误

hyperledger fabric - docker container error

docker 容器在脚本完成后停止。

运行 bash 文件 ( docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb )

获取错误:

Error response from daemon: Container 987d99518d4158f29f0800c8bbef1c2b1295d6fade341fde7c775e415b700a38 is not running

运行:

docker ps -a

表示状态已退出(1) 13 秒

所以它 运行 并关闭了?

也是我每次运行:

docker rm -f $(docker ps -aq)

并重新 运行 bash 将错误消息中的另一个容器归档。

这里是 bash 文件:

#!/bin/bash
#
# SPDX-License-Identifier: Apache-2.0
# This code is based on code written by the Hyperledger Fabric community. 
# Original code can be found here: https://github.com/hyperledger/fabric-samples/blob/release/fabcar/startFabric.sh
#
# Exit on first error

set -e

# don't rewrite paths for Windows Git Bash users
export MSYS_NO_PATHCONV=1

starttime=$(date +%s)

if [ ! -d ~/.hfc-key-store/ ]; then
mkdir ~/.hfc-key-store/
fi

# launch network; create channel and join peer to channel
cd ../basic-network
./start.sh

# Now launch the CLI container in order to install, instantiate chaincode
# and prime the ledger with our 10 tuna catches
docker-compose -f ./docker-compose.yml up -d cli

docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode install -n tuna-app -v 1.0 -p github.com/tuna-app
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n tuna-app -v 1.0 -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
sleep 10
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n tuna-app -c '{"function":"initLedger","Args":[""]}'

printf "\nTotal execution time : $(($(date +%s) - starttime)) secs ...\n\n"
printf "\nStart with the registerAdmin.js, then registerUser.js, then server.js\n\n"

删除那个 -d 标志。

docker-compose -f ./docker-compose.yml up cli

只有 cli 会退出,因为您不需要它 运行 在前台,但其余容器将始终 运行 在前台。

如果您想更深入地检查,请在 docker-compose 文件中从命令属性中删除 -d。

让我知道它是否适合您。并把你的 docker ps -a 放在这里,以防它对你不起作用。

解决方案 1 -

当您使用以下命令启动网络时,CLI 容器默认会停留 1000 秒。

docker-compose -f docker-compose-cli.yaml up -d

所以在 运行 这个命令之前你必须设置 TIMEOUT 变量。要设置超时,请在启动网络之前执行以下命令。

export TIMEOUT=<no of seconds your CLI should stay up>

通过这种方式,只要您需要执行更多命令,您就可以确保您的 cli 保持运行。

此外,如果您的 CLI 不是 运行,则只需执行此命令即可启动 CLI。

docker start cli

解-2

在 运行 docker-compose -f docker-compose-cli.yaml up -d 命令之前打开 docker-compose-cli.yaml` 文件。

然后像这样注释掉下面一行 -

#command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME} ${DELAY}; sleep $TIMEOUT'

希望对您有所帮助。