如何在不丢失现有数据的情况下重启 fabric composer?
How to restart the fabric composer without losing the existing data?
我已经在我的本地尝试过 "carauction-network" 示例。但是当我使用 "startFabric.sh" 文件启动网络时,它正在删除 Couch DB 并再次创建 Couch DB,因为这个旧数据正在丢失。请建议我们如何在不清理数据的情况下启动结构服务器。
fabric-dev-servers 下的 startFabric.sh
(以前称为 fabric-tools)不仅仅是启动 Fabric - 它会删除现有的 Fabric Container 并重新创建新的 Container来自 Docker 图片。这样做的影响是您会从 Fabric 中丢失所有数据和业务网络。除了 PeerAdmin@hlfv1 之外的所有业务网络卡现在都没有用了。
如果您想在创建 Fabric 后停止并启动它,请按照以下命令保留您的业务网络和数据:
- 切换到
docker-compose.yml
文件所在的目录(例如 /home/<user>/fabric-tools/fabric-scripts/hlfv1/composer
)
- 运行
docker-compose stop
顶部织物容器
- 运行
docker-compose start
从中断处重新开始。
在使用 docker-compose 命令之前,必须 位于正确的文件夹中。
版本更新
使用 Composer v0.20.x(对于 Fabric 1.2)文件夹的 names/version 已更改:
/home/<user>/fabric-dev-servers/fabric-scripts/hlfv12/composer
使用 Composer v0.19.x(较旧,对于 Fabric v1.1)文件夹 names/versions 已更改:
/home/<user>/fabric-dev-servers/fabric-scripts/hlfv11/composer
在 fabric-dev-server/fabric-scripts/hlfv11 中编辑你 startFabric.sh,如下所示
#!/bin/bash
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Exit on first error, print all commands.
set -e
Usage() {
echo ""
echo "Usage: ./startFabric.sh [-d || --dev]"
echo ""
echo "Options:"
echo -e "\t-d or --dev: (Optional) enable fabric development mode"
echo ""
echo "Example: ./startFabric.sh"
echo ""
exit 1
}
Parse_Arguments() {
while [ $# -gt 0 ]; do
case in
--help)
HELPINFO=true
;;
--dev | -d)
FABRIC_DEV_MODE=true
;;
esac
shift
done
}
Parse_Arguments $@
if [ "${HELPINFO}" == "true" ]; then
Usage
fi
#Detect architecture
ARCH=`uname -m`
# Grab the current directory
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [ "${FABRIC_DEV_MODE}" == "true" ]; then
DOCKER_FILE="${DIR}"/composer/docker-compose-dev.yml
else
DOCKER_FILE="${DIR}"/composer/docker-compose.yml
fi
ARCH=$ARCH docker-compose -f "${DOCKER_FILE}" stop
ARCH=$ARCH docker-compose -f "${DOCKER_FILE}" up -d
# wait for Hyperledger Fabric to start
# incase of errors when running later commands, issue export FABRIC_START_TIMEOUT=<larger number>
echo "sleeping for ${FABRIC_START_TIMEOUT} seconds to wait for fabric to complete start up"
sleep ${FABRIC_START_TIMEOUT}
# Create the channel
#docker exec peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c composerchannel -f /etc/hyperledger/configtx/composer-channel.tx
# Join peer0.org1.example.com to the channel.
#docker exec -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel join -b composerchannel.block
if [ "${FABRIC_DEV_MODE}" == "true" ]; then
echo "Fabric Network started in chaincode development mode"
fi
为了扩展 R Thatcher 的解决方案,如果您有权访问 bash shell,那么您可以将此脚本放在您的 fabric-dev-server 文件夹中。它将按照上述步骤重新启动网络,而不会丢失您的数据。简单地 cd 到正确的目录和 运行s docker-compose stop & docker-compose start。在重新启动以恢复网络后,运行 也可以正常工作。
#!/bin/bash
cd ./fabric-scripts/hlfv1/composer
docker-compose stop
docker-compose start
看似微不足道,并没有给讨论增加多少,但节省了时间。
我已经在我的本地尝试过 "carauction-network" 示例。但是当我使用 "startFabric.sh" 文件启动网络时,它正在删除 Couch DB 并再次创建 Couch DB,因为这个旧数据正在丢失。请建议我们如何在不清理数据的情况下启动结构服务器。
fabric-dev-servers 下的 startFabric.sh
(以前称为 fabric-tools)不仅仅是启动 Fabric - 它会删除现有的 Fabric Container 并重新创建新的 Container来自 Docker 图片。这样做的影响是您会从 Fabric 中丢失所有数据和业务网络。除了 PeerAdmin@hlfv1 之外的所有业务网络卡现在都没有用了。
如果您想在创建 Fabric 后停止并启动它,请按照以下命令保留您的业务网络和数据:
- 切换到
docker-compose.yml
文件所在的目录(例如/home/<user>/fabric-tools/fabric-scripts/hlfv1/composer
) - 运行
docker-compose stop
顶部织物容器 - 运行
docker-compose start
从中断处重新开始。
在使用 docker-compose 命令之前,必须 位于正确的文件夹中。
版本更新
使用 Composer v0.20.x(对于 Fabric 1.2)文件夹的 names/version 已更改:
/home/<user>/fabric-dev-servers/fabric-scripts/hlfv12/composer
使用 Composer v0.19.x(较旧,对于 Fabric v1.1)文件夹 names/versions 已更改:
/home/<user>/fabric-dev-servers/fabric-scripts/hlfv11/composer
在 fabric-dev-server/fabric-scripts/hlfv11 中编辑你 startFabric.sh,如下所示
#!/bin/bash
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Exit on first error, print all commands.
set -e
Usage() {
echo ""
echo "Usage: ./startFabric.sh [-d || --dev]"
echo ""
echo "Options:"
echo -e "\t-d or --dev: (Optional) enable fabric development mode"
echo ""
echo "Example: ./startFabric.sh"
echo ""
exit 1
}
Parse_Arguments() {
while [ $# -gt 0 ]; do
case in
--help)
HELPINFO=true
;;
--dev | -d)
FABRIC_DEV_MODE=true
;;
esac
shift
done
}
Parse_Arguments $@
if [ "${HELPINFO}" == "true" ]; then
Usage
fi
#Detect architecture
ARCH=`uname -m`
# Grab the current directory
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [ "${FABRIC_DEV_MODE}" == "true" ]; then
DOCKER_FILE="${DIR}"/composer/docker-compose-dev.yml
else
DOCKER_FILE="${DIR}"/composer/docker-compose.yml
fi
ARCH=$ARCH docker-compose -f "${DOCKER_FILE}" stop
ARCH=$ARCH docker-compose -f "${DOCKER_FILE}" up -d
# wait for Hyperledger Fabric to start
# incase of errors when running later commands, issue export FABRIC_START_TIMEOUT=<larger number>
echo "sleeping for ${FABRIC_START_TIMEOUT} seconds to wait for fabric to complete start up"
sleep ${FABRIC_START_TIMEOUT}
# Create the channel
#docker exec peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c composerchannel -f /etc/hyperledger/configtx/composer-channel.tx
# Join peer0.org1.example.com to the channel.
#docker exec -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel join -b composerchannel.block
if [ "${FABRIC_DEV_MODE}" == "true" ]; then
echo "Fabric Network started in chaincode development mode"
fi
为了扩展 R Thatcher 的解决方案,如果您有权访问 bash shell,那么您可以将此脚本放在您的 fabric-dev-server 文件夹中。它将按照上述步骤重新启动网络,而不会丢失您的数据。简单地 cd 到正确的目录和 运行s docker-compose stop & docker-compose start。在重新启动以恢复网络后,运行 也可以正常工作。
#!/bin/bash
cd ./fabric-scripts/hlfv1/composer
docker-compose stop
docker-compose start
看似微不足道,并没有给讨论增加多少,但节省了时间。