diff --git a/deploy/docker-demo/pom.xml b/deploy/docker-demo/pom.xml new file mode 100644 index 00000000..d7e7f123 --- /dev/null +++ b/deploy/docker-demo/pom.xml @@ -0,0 +1,85 @@ + + + + jdchain-root + com.jd.blockchain + 1.2.1.RELEASE + ../../pom.xml + + 1.3.0 + 4.0.0 + + docker-demo + + + jdchain-demo + + + maven-resources-plugin + 3.0.2 + + + copy-resources + validate + + copy-resources + + + + UTF-8 + ${project.basedir}/src/main/docker/zip + false + + + ${project.basedir}/../deploy-peer/target/ + false + + jdchain-peer-${project.version}.RELEASE.zip + + + + + ${project.basedir}/../deploy-gateway/target/ + false + + jdchain-gateway-${project.version}.RELEASE.zip + + + + + + + + + + + com.spotify + docker-maven-plugin + 1.2.2 + + + + + build-image + + package + + build + + + + + + + jdchain-demo + ${project.version} + + ${project.basedir}/src/main/docker + + + + + + \ No newline at end of file diff --git a/deploy/docker-demo/readme.md b/deploy/docker-demo/readme.md new file mode 100644 index 00000000..eb4034f1 --- /dev/null +++ b/deploy/docker-demo/readme.md @@ -0,0 +1,41 @@ +# jdchain-demo镜像使用说明 +本镜像主要为快速构建JDChain测试环境使用,内嵌固定的公私钥,不可用于生产正式环境。 +JDChain在docker中的安装路径:/export/jdchain,网关对外端口为:8080。可通过docker-compose-all文件来修改端口。 +demo环境中加载了部分测试数据,区块高度:22,交易总数:23,用户总数:6,数据账户总数:3,合约总数:2。 + +## 如何生成镜像 +1. 需要预先在deploy-peer和deploy-gateway中生成zip安装包; +2. 本项目中执行:mvn clean package;会在docker环境中生成jdchain-peer镜像; +3. 生成镜像文件。执行resource中:zip.sh,可生成镜像的tar.gz压缩包; + +## 镜像快速使用 +1.在已经安装docker工具的环境中,装入jdchain-demo镜像: +```` +docker load -i jdchain-demo_1.3.0.tar.gz +```` +2.启动脚本 +每次执行启动脚本时,会删除原有的容器,然后重新构建全新的容器。 +所以每次执行之后,会清除原先链上新增的区块。 +```` +sh start-net.sh +```` +3.卸载容器 +如果不再使用容器,在start-net.sh脚本所在路径下执行: +```` +docker-compose -f docker-compose-all.yaml down +```` + +## SDK连接网关参数 +```` +ip=localhost +port=8080 +#默认公钥的内容(Base58编码数据); +keys.default.pubkey=3snPdw7i7PisoLpqqtETdqzQeKVjQReP2Eid9wYK67q9z6trvByGZs +#默认私钥的内容(加密的Base58编码数据);在 pk-path 和 pk 之间必须设置其一; +keys.default.privkey=177gk2PbxhHeEdfAAqGfShJQyeV4XvGsJ9CvJFUbToBqwW1YJd5obicySE1St6SvPPaRrUP +#默认私钥的解码密码; +keys.default.privkey-password=8EjkXVSTxMFjCvNNsTo8RBMDEVQmk7gYkW4SCDuvdsBG +```` + + + diff --git a/deploy/docker-demo/src/main/docker/Dockerfile b/deploy/docker-demo/src/main/docker/Dockerfile new file mode 100644 index 00000000..616e1b74 --- /dev/null +++ b/deploy/docker-demo/src/main/docker/Dockerfile @@ -0,0 +1,35 @@ +FROM centos:8.2.2004 + +# install tools +RUN yum install wget -y \ + && wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo \ + && yum install java net-tools nc crontabs expect unzip -y \ + && yum install langpacks-zh_CN.noarch -y \ + && echo "LANG=zh_CN.utf8" >> /etc/locale.conf \ + && source /etc/locale.conf \ + && yum clean all + +WORKDIR /export/jdchain +COPY zip/* /export/jdchain/ + +# env +ENV RELEASE_DIR=/export/jdchain +ENV RELEASE_VERSION=1.3.0 +#ENV DATA_DIR=/shared +ENV NAME=conf +ENV SERVER_NAME_PEER=deploy-peer +ENV SERVER_NAME_GW=deploy-gateway + +COPY script/* /export/jdchain/ +RUN chmod +x /export/jdchain/*.sh + +# ports +EXPOSE 8080 +#EXPOSE 16000 +#EXPOSE 16010 +#EXPOSE 16020 +#EXPOSE 16030 + +#ENTRYPOINT ["/bin/sh","-c","/export/jdchain/start.sh"] +ENTRYPOINT sh /export/jdchain/start.sh + diff --git a/deploy/docker-demo/src/main/docker/script/shutdown.sh b/deploy/docker-demo/src/main/docker/script/shutdown.sh new file mode 100644 index 00000000..8cf6d207 --- /dev/null +++ b/deploy/docker-demo/src/main/docker/script/shutdown.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +ps -ef|grep 'jdchain'|grep -v grep|cut -c 9-15|xargs kill -9 + diff --git a/deploy/docker-demo/src/main/docker/script/start.sh b/deploy/docker-demo/src/main/docker/script/start.sh new file mode 100644 index 00000000..a6cc134c --- /dev/null +++ b/deploy/docker-demo/src/main/docker/script/start.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +cd $RELEASE_DIR + +# invoke it once again; +#gw_pid_file="./gw/bin/PID.log" +#if [ ! -f gw_pid_file ] ; then +# echo "get the PID.log, only to start the peer and gateway." + unzip -o conf.zip + + for i in `seq 0 3` + do + unzip -n -d ./peer$i jdchain-peer-$RELEASE_VERSION.RELEASE.zip + chmod +x ./peer$i/bin/* + done + + unzip -n -d ./gw jdchain-gateway-$RELEASE_VERSION.RELEASE.zip + chmod +x ./gw/bin/* +#fi + +sh ./peer0/bin/peer-startup.sh +sh ./peer1/bin/peer-startup.sh +sh ./peer2/bin/peer-startup.sh +sh ./peer3/bin/peer-startup.sh +sleep 30 +sh ./gw/bin/startup.sh + +tail -f /dev/null diff --git a/deploy/docker-demo/src/main/docker/zip/conf.zip b/deploy/docker-demo/src/main/docker/zip/conf.zip new file mode 100644 index 00000000..8f4c3d97 Binary files /dev/null and b/deploy/docker-demo/src/main/docker/zip/conf.zip differ diff --git a/deploy/docker-demo/src/main/resources/docker-compose-all.yaml b/deploy/docker-demo/src/main/resources/docker-compose-all.yaml new file mode 100644 index 00000000..b42268f9 --- /dev/null +++ b/deploy/docker-demo/src/main/resources/docker-compose-all.yaml @@ -0,0 +1,36 @@ +version: '2' + +services: + demo: + image: "jdchain-demo:1.3.0" + container_name: jdchain-demo + networks: + jdchain_default: + aliases: + - demo + hostname: demo + restart: always + ports: + - "11010:11010" + - "7080:7080" + - "10080:10080" + - "10081:10081" + - "11011:11011" + - "7081:7081" + - "10082:10082" + - "10083:10083" + - "11012:11012" + - "7082:7082" + - "10084:10084" + - "10085:10085" + - "11013:11013" + - "7083:7083" + - "10086:10086" + - "10087:10087" + - "8080:8080" +# volumes: +# - "./logs:/export/jdchain/peer0/logs" + +networks: + jdchain_default: + driver: bridge diff --git a/deploy/docker-demo/src/main/resources/start-net.sh b/deploy/docker-demo/src/main/resources/start-net.sh new file mode 100644 index 00000000..7eafc55d --- /dev/null +++ b/deploy/docker-demo/src/main/resources/start-net.sh @@ -0,0 +1,5 @@ +#!/bin/bash +echo "停止network" +docker-compose -f docker-compose-all.yaml down +echo "启动jdchain" +docker-compose -f docker-compose-all.yaml up -d diff --git a/deploy/docker-demo/src/main/resources/zip.sh b/deploy/docker-demo/src/main/resources/zip.sh new file mode 100755 index 00000000..3305c646 --- /dev/null +++ b/deploy/docker-demo/src/main/resources/zip.sh @@ -0,0 +1,9 @@ +#/bin/bash + +# all in one; +allIn1_file="./jdchain-demo_1.3.0.tar.gz" +if [ -f $allIn1_file ] ; then + rm -rf $allIn1_file +fi +docker save jdchain-demo:1.3.0 -o jdchain-demo_1.3.0.tar +gzip jdchain-demo_1.3.0.tar diff --git a/deploy/pom.xml b/deploy/pom.xml index 98b06e0a..2b416ee0 100644 --- a/deploy/pom.xml +++ b/deploy/pom.xml @@ -20,6 +20,7 @@ ../core deploy-gateway deploy-peer + docker-demo