docker容器在脚本完成后停止。
运行bash文件(docker-compose-f docker-compose.yml 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。
让我知道它是否适合您。并把你的码头工人ps -a
放在这里,以防它不适合你。
解决方案1-
当您使用以下命令启动网络时,默认情况下CLI容器将保持1000秒。
docker-compose-f docker-coompose-cli.yaml up-d
因此,在运行此命令之前,您必须设置TIMEOUT变量。要设置超时,请在启动网络之前执行以下命令。
导出超时=
这样,只要您需要执行进一步的命令,您就可以确保您的 CLI 保持正常运行。
此外,如果您的CLI未运行,则只需执行此命令即可启动CLI。
docker start cli
解决方案2
在运行 docker-compose -f docker-compose-cli.yaml up -d 命令之前,请打开 docker-compose-cli.yaml
' 文件。
然后像这样注释掉下面一行-
< code>#command: /bin/bash -c '。/scripts/script . sh $ { CHANNEL _ NAME } $ { DELAY };睡眠$超时'
希望这有帮助。