如何更快地安装 Hyperledger Fabric java 智能合约(我想避免超时)?
How to make faster Hyperledger Fabric java Smart Contract install (I want to avoid a timeout)?
我正在尝试在 Hyperledger Fabric 上部署 Java 智能合约,但在执行命令 peer lifecycle chaincode install cp.tar.gz
.
时遇到超时问题
终端的错误是:
Error: chaincode install failed with status: 500 - error in
simulation: failed to execute transaction
baeacb6b68dac2872098105d20cb0398e5ce5b744afd37bf75ab65b0ffc7a754:
error sending: timeout expired while executing transaction
监控网络,报错是这样的:
lucid_ganguly|Downloading https://services.gradle.org/distributions/gradle-5.6.2-bin.zip
peer0.org1.example.com|2020-05-30 03:15:08.175 UTC [endorser]
callChaincode -> INFO 04d finished chaincode: _lifecycle duration:
300000ms channel= txID=baeacb6b peer0.org1.example.com|2020-05-30
03:15:08.176 UTC [endorser] SimulateProposal -> ERRO 04e failed to
invoke chaincode _lifecycle, error: timeout expired while executing
transaction
在我看来,下载 gradle 文件花费了太多时间。我的网速不是那么快,但昨天它好几次都运行良好。如果我重新执行命令,那么合约就正确安装了,我想是因为文件已经下载到对等点了。
修改超时限制可能会避免错误,但仍然会花费大量时间安装智能合约。
我对docker了解不多。每次重新启动网络时,有什么方法不会下载 gradle 文件?还有其他方法可以加快安装速度吗?
编辑:打开 Kazam(不录制)是否可能使我的 PC 运行速度变慢(并可能导致超时)????
这就是超级分类帐的工作原理。
1) 您的 Java 代码将是 gradle 项目。当您在 'cli' 容器中触发 'install' 时,代码将被简单地复制到指定位置。
2)下一步将是实例化。在这一步中,真正开始并开始下载所有依赖项的是'gradle build'。
为了加快速度,首先让 'gradle build' 在您的机器上运行。这将导致所有依赖项都被下载到您的“~/.gradle”文件夹中。现在,'COPY' 这个文件夹到 'hyperledger/fabric-javaenv' docker 图像,即我们正在将所有依赖项从您的本地磁盘复制到图像中。这样,就可以避免从 docker 容器内下载。
编辑:
希望您已经克隆了 'fabric samples' 代码。完成后,前往以下位置。正是这段代码从 'cli' 容器中安装并实例化到对等体中。
C:\sw\hlf146-2\fabric-samples\fabcar\java
现在执行 gradle 构建。假设您可以访问互联网并且没有代理相关的麻烦,那么您的构建应该会成功。
C:\sw\hlf146-2\fabric-samples\fabcar\java>gradle build
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/6.3/userguide/gradle_daemon.html.
Daemon will be stopped at the end of the build stopping after processing
> Task :buildEnvironment
------------------------------------------------------------
Root project
------------------------------------------------------------
classpath
No dependencies
A web-based, searchable dependency report is available by adding the --scan option.
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.3/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 16s
1 actionable task: 1 executed
一旦成功,gradle 构建会将所有依赖项下载到以下文件夹
c:\users\your-user-name\.gradle
希望您也已经将织物图像下载到您的机器上。不要担心我下面输出的织物图像的大小。我在胡闹,所以你看到某些图像 'huge' 像 4.58 GB。也请忽略下面的 'dev-peerX.orgX' 图片。您会在网络启动时创建它们。
C:\sw\hlf146-2\fabric-samples\fabcar\java>docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
dev-peer0.org2.example.com-fabcar-1.0-264b0a1cb5efbecaac5cf8990339c24474dc8435c6e10f10f2be565d555d0e94 latest 32aca2e8365e 4 hours ago 4.58GB
dev-peer0.org1.example.com-fabcar-1.0-5c906e402ed29f20260ae42283216aa75549c571e2e380f3615826365d8269ba latest 89f8611e67f7 4 hours ago 4.58GB
hyperledger/fabric-javaenv 1.4 190c5452a677 22 hours ago 4.56GB
hyperledger/fabric-ccenv 1.4 774f228847d4 36 hours ago 1.79GB
openjdk latest 0ce6496aae74 6 weeks ago 497MB
hyperledger/fabric-ca 1.4 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca 1.4.6 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca latest 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-tools 1.4.6 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-tools latest 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-orderer 1.4 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer 1.4.6 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer latest 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-peer 1.4 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer 1.4.6 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer latest 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-zookeeper 0.4 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper 0.4.18 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper latest ede9389347db 7 months ago 276MB
hyperledger/fabric-kafka 0.4 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka 0.4.18 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka latest caaae0474ef2 7 months ago 270MB
hyperledger/fabric-couchdb 0.4 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb 0.4.18 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb latest d369d4eaa0fd 7 months ago 261MB
现在,在上面的图像列表中,HLF 将使用 'hyperledger/fabric-javaenv' 图像从 'cli' 容器中编译您的链代码。我们希望通过您机器的 'c:\users\your-user-name.gradle' 依赖关系来丰富这张图片。此外,在撰写本文时,'hyperledger/fabric-javaenv' 图像使用的是 gradle 4.5 版本,而我想使用最新的 gradle 版本。因此,我也将 gradle 6.3(尽管 Gradle 6.4 在撰写本文时是最新的)也复制到 'hyperledger/fabric-javaenv' 图像。
因此,为此,在一个新文件夹中放入一个名为 'Dockerfile' 的文件(没有文件扩展名),其中包含以下内容(从这里开始,我假设您对 docker,否则,你应该到此为止。学习一些 Docker 的基础知识,然后从这里继续。
FROM hyperledger/fabric-javaenv:1.4
RUN rm -rf /root/.gradle
RUN rm -rf /opt/gradle
ADD ./gradle.zip /opt/
RUN unzip -o /opt/gradle.zip -d /opt/
ADD ./.gradle.zip /root/.gradle/
RUN unzip -o /root/.gradle/.gradle.zip -d /root/.gradle
ENV PATH="/opt/gradle/gradle-6.3/bin:${PATH}"
ENV GRADLE_HOME="opt/gradle/gradle-6.3"
RUN chmod 777 /opt/gradle/gradle-6.3/bin/*
ENV JAVA_HOME="/opt/java/openjdk"
现在将 c:\users\your-user-name.gradle 文件夹内容(不是文件夹本身)压缩为 '.gradle.zip' 并将其放在上面的文件夹中。接下来还要放置gradle.zip(这将是下载的gradle软件,当你解压这个gradle.zip时,它应该有gradle-6.3在里面,那将有所有Gradle 软件。您可以在 'Dockerfile' 上面编辑,否则有相应的权限。
因为我 运行 在 windows 上安装了所有这些,所以我在我的机器上安装了 'docker desktop' 并且也选择了 'switch to linux containers'。如果您没有此软件,则需要安装此软件。再次假设您不在代理后面,您将不会遇到所有与代理相关的麻烦,并且 Docker 安装应该是无缝的。
接下来我们需要'build'docker图像使用上面'Dockerfile'.
Microsoft Windows [Version 10.0.17763.1217]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\sw\hlf-scripts\javaenv-image-2>dir
Volume in drive C is Windows
Volume Serial Number is AE8A-E101
Directory of C:\sw\hlf-scripts\javaenv-image-2
02-06-2020 00:20 <DIR> .
02-06-2020 00:20 <DIR> ..
02-06-2020 00:19 68,813,513 .gradle.zip
01-06-2020 21:21 412 Dockerfile
01-06-2020 17:15 101,876,236 gradle.zip
C:\sw\hlf-scripts\javaenv-image-2>docker build .
Sending build context to Docker daemon 170.7MB
Step 1/11 : FROM hyperledger/fabric-javaenv:1.4
---> 190c5452a677
Step 2/11 : RUN rm -rf /root/.gradle
---> Running in 1bee6799c989
Removing intermediate container 1bee6799c989
---> e80c78e7f151
Step 3/11 : RUN rm -rf /opt/gradle
---> Running in 8b92d2062a0e
Removing intermediate container 8b92d2062a0e
---> 9a8b7ebfd19a
Step 4/11 : ADD ./gradle.zip /opt/
---> 6c32d08ac3d6
Step 5/11 : RUN unzip -o /opt/gradle.zip -d /opt/
---> Running in db8bbf7af51c
Archive: /opt/gradle.zip
creating: /opt/gradle/
creating: /opt/gradle/gradle-6.3/
creating: /opt/gradle/gradle-6.3/bin/
inflating: /opt/gradle/gradle-6.3/bin/gradle
inflating: /opt/gradle/gradle-6.3/bin/gradle.bat
...
inflating: /opt/gradle/gradle-6.3/lib/xml-apis-1.4.01.jar
inflating: /opt/gradle/gradle-6.3/LICENSE
inflating: /opt/gradle/gradle-6.3/NOTICE
inflating: /opt/gradle/gradle-6.3/README
Removing intermediate container db8bbf7af51c
---> 00b1723e518d
Step 6/11 : ADD ./.gradle.zip /root/.gradle/
---> 19cab7daafba
Step 7/11 : RUN unzip -o /root/.gradle/.gradle.zip -d /root/.gradle
---> Running in cda0aad70e6f
Archive: /root/.gradle/.gradle.zip
creating: /root/.gradle/6.3/
creating: /root/.gradle/6.3/fileChanges/
extracting: /root/.gradle/6.3/fileChanges/last-build.bin
creating: /root/.gradle/6.3/fileHashes/
...
extracting: /root/.gradle/vcs-1/gc.properties
creating: /root/.gradle/workers/
Removing intermediate container cda0aad70e6f
---> bd42d756dcf7
Step 8/11 : ENV PATH="/opt/gradle/gradle-6.3/bin:${PATH}"
---> Running in 3d84e00c5b82
Removing intermediate container 3d84e00c5b82
---> ef445b162906
Step 9/11 : ENV GRADLE_HOME="opt/gradle/gradle-6.3"
---> Running in 41c1a2017e9f
Removing intermediate container 41c1a2017e9f
---> c77880c756fd
Step 10/11 : RUN chmod 777 /opt/gradle/gradle-6.3/bin/*
---> Running in 77eb321c94ce
Removing intermediate container 77eb321c94ce
---> 3e4e65c47c61
Step 11/11 : ENV JAVA_HOME="/opt/java/openjdk"
---> Running in 4bc72d56e33d
Removing intermediate container 4bc72d56e33d
---> eba22c19da02
Successfully built eba22c19da02
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
C:\sw\hlf-scripts\javaenv-image-2>
检查 docker 图片列表,您应该可以在其中找到新创建的图片。在下面的列表中,看到第一个,即现在创建的那个。它有 REPOSITORY 和 TAG 作为 .观察这个新创建的图像的 IMAGEID 是 'eba22c19da02'。这稍后将在下面的命令中使用。
C:\sw\hlf-scripts\javaenv-image-2>docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> eba22c19da02 4 minutes ago 4.94GB
dev-peer0.org2.example.com-fabcar-1.0-264b0a1cb5efbecaac5cf8990339c24474dc8435c6e10f10f2be565d555d0e94 latest 32aca2e8365e 5 hours ago 4.58GB
dev-peer0.org1.example.com-fabcar-1.0-5c906e402ed29f20260ae42283216aa75549c571e2e380f3615826365d8269ba latest 89f8611e67f7 5 hours ago 4.58GB
hyperledger/fabric-javaenv 1.4 190c5452a677 22 hours ago 4.56GB
hyperledger/fabric-ccenv 1.4 774f228847d4 37 hours ago 1.79GB
openjdk latest 0ce6496aae74 6 weeks ago 497MB
hyperledger/fabric-ca 1.4 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca 1.4.6 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca latest 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-tools 1.4.6 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-tools latest 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-orderer 1.4 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer 1.4.6 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer latest 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-peer 1.4 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer 1.4.6 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer latest 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-zookeeper 0.4 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper 0.4.18 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper latest ede9389347db 7 months ago 276MB
hyperledger/fabric-kafka 0.4 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka 0.4.18 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka latest caaae0474ef2 7 months ago 270MB
hyperledger/fabric-couchdb 0.4 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb 0.4.18 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb latest d369d4eaa0fd 7 months ago 261MB
现在我们要告诉 docker 使用这个新创建的图像作为 'hyperledger/fabric-javaenv' 图像(稍后将在 HLF 网络创建期间由 HLF 拾取)。对于所有这些,我正在 运行ning HLF 1.4,下面的标签中给出了“:1.4”。命令为 运行 后,您现在可以观察到 'eba22c19da02' 现在填充为 'hyperledger/fabric-javaenv',TAG 为 1.4
C:\sw\hlf-scripts\javaenv-image-2>docker tag eba22c19da02 hyperledger/fabric-javaenv:1.4
C:\sw\hlf-scripts\javaenv-image-2>docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-javaenv 1.4 eba22c19da02 8 minutes ago 4.94GB
dev-peer0.org2.example.com-fabcar-1.0-264b0a1cb5efbecaac5cf8990339c24474dc8435c6e10f10f2be565d555d0e94 latest 32aca2e8365e 5 hours ago 4.58GB
dev-peer0.org1.example.com-fabcar-1.0-5c906e402ed29f20260ae42283216aa75549c571e2e380f3615826365d8269ba latest 89f8611e67f7 5 hours ago 4.58GB
hyperledger/fabric-ccenv 1.4 774f228847d4 37 hours ago 1.79GB
openjdk latest 0ce6496aae74 6 weeks ago 497MB
hyperledger/fabric-ca 1.4 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca 1.4.6 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca latest 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-tools 1.4.6 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-tools latest 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-orderer 1.4 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer 1.4.6 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer latest 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-peer 1.4 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer 1.4.6 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer latest 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-zookeeper 0.4 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper 0.4.18 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper latest ede9389347db 7 months ago 276MB
hyperledger/fabric-kafka 0.4 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka 0.4.18 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka latest caaae0474ef2 7 months ago 270MB
hyperledger/fabric-couchdb 0.4 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb 0.4.18 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb latest d369d4eaa0fd 7 months ago 261MB
C:\sw\hlf-scripts\javaenv-image-2>
现在继续您的 Java HLF 网络创建,您的链码安装和实例化应该会成功。
我正在尝试在 Hyperledger Fabric 上部署 Java 智能合约,但在执行命令 peer lifecycle chaincode install cp.tar.gz
.
终端的错误是:
Error: chaincode install failed with status: 500 - error in simulation: failed to execute transaction baeacb6b68dac2872098105d20cb0398e5ce5b744afd37bf75ab65b0ffc7a754: error sending: timeout expired while executing transaction
监控网络,报错是这样的:
lucid_ganguly|Downloading https://services.gradle.org/distributions/gradle-5.6.2-bin.zip peer0.org1.example.com|2020-05-30 03:15:08.175 UTC [endorser] callChaincode -> INFO 04d finished chaincode: _lifecycle duration: 300000ms channel= txID=baeacb6b peer0.org1.example.com|2020-05-30 03:15:08.176 UTC [endorser] SimulateProposal -> ERRO 04e failed to invoke chaincode _lifecycle, error: timeout expired while executing transaction
在我看来,下载 gradle 文件花费了太多时间。我的网速不是那么快,但昨天它好几次都运行良好。如果我重新执行命令,那么合约就正确安装了,我想是因为文件已经下载到对等点了。
修改超时限制可能会避免错误,但仍然会花费大量时间安装智能合约。
我对docker了解不多。每次重新启动网络时,有什么方法不会下载 gradle 文件?还有其他方法可以加快安装速度吗?
编辑:打开 Kazam(不录制)是否可能使我的 PC 运行速度变慢(并可能导致超时)????
这就是超级分类帐的工作原理。 1) 您的 Java 代码将是 gradle 项目。当您在 'cli' 容器中触发 'install' 时,代码将被简单地复制到指定位置。 2)下一步将是实例化。在这一步中,真正开始并开始下载所有依赖项的是'gradle build'。
为了加快速度,首先让 'gradle build' 在您的机器上运行。这将导致所有依赖项都被下载到您的“~/.gradle”文件夹中。现在,'COPY' 这个文件夹到 'hyperledger/fabric-javaenv' docker 图像,即我们正在将所有依赖项从您的本地磁盘复制到图像中。这样,就可以避免从 docker 容器内下载。
编辑: 希望您已经克隆了 'fabric samples' 代码。完成后,前往以下位置。正是这段代码从 'cli' 容器中安装并实例化到对等体中。
C:\sw\hlf146-2\fabric-samples\fabcar\java
现在执行 gradle 构建。假设您可以访问互联网并且没有代理相关的麻烦,那么您的构建应该会成功。
C:\sw\hlf146-2\fabric-samples\fabcar\java>gradle build
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/6.3/userguide/gradle_daemon.html.
Daemon will be stopped at the end of the build stopping after processing
> Task :buildEnvironment
------------------------------------------------------------
Root project
------------------------------------------------------------
classpath
No dependencies
A web-based, searchable dependency report is available by adding the --scan option.
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.3/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 16s
1 actionable task: 1 executed
一旦成功,gradle 构建会将所有依赖项下载到以下文件夹
c:\users\your-user-name\.gradle
希望您也已经将织物图像下载到您的机器上。不要担心我下面输出的织物图像的大小。我在胡闹,所以你看到某些图像 'huge' 像 4.58 GB。也请忽略下面的 'dev-peerX.orgX' 图片。您会在网络启动时创建它们。
C:\sw\hlf146-2\fabric-samples\fabcar\java>docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
dev-peer0.org2.example.com-fabcar-1.0-264b0a1cb5efbecaac5cf8990339c24474dc8435c6e10f10f2be565d555d0e94 latest 32aca2e8365e 4 hours ago 4.58GB
dev-peer0.org1.example.com-fabcar-1.0-5c906e402ed29f20260ae42283216aa75549c571e2e380f3615826365d8269ba latest 89f8611e67f7 4 hours ago 4.58GB
hyperledger/fabric-javaenv 1.4 190c5452a677 22 hours ago 4.56GB
hyperledger/fabric-ccenv 1.4 774f228847d4 36 hours ago 1.79GB
openjdk latest 0ce6496aae74 6 weeks ago 497MB
hyperledger/fabric-ca 1.4 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca 1.4.6 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca latest 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-tools 1.4.6 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-tools latest 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-orderer 1.4 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer 1.4.6 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer latest 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-peer 1.4 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer 1.4.6 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer latest 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-zookeeper 0.4 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper 0.4.18 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper latest ede9389347db 7 months ago 276MB
hyperledger/fabric-kafka 0.4 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka 0.4.18 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka latest caaae0474ef2 7 months ago 270MB
hyperledger/fabric-couchdb 0.4 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb 0.4.18 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb latest d369d4eaa0fd 7 months ago 261MB
现在,在上面的图像列表中,HLF 将使用 'hyperledger/fabric-javaenv' 图像从 'cli' 容器中编译您的链代码。我们希望通过您机器的 'c:\users\your-user-name.gradle' 依赖关系来丰富这张图片。此外,在撰写本文时,'hyperledger/fabric-javaenv' 图像使用的是 gradle 4.5 版本,而我想使用最新的 gradle 版本。因此,我也将 gradle 6.3(尽管 Gradle 6.4 在撰写本文时是最新的)也复制到 'hyperledger/fabric-javaenv' 图像。
因此,为此,在一个新文件夹中放入一个名为 'Dockerfile' 的文件(没有文件扩展名),其中包含以下内容(从这里开始,我假设您对 docker,否则,你应该到此为止。学习一些 Docker 的基础知识,然后从这里继续。
FROM hyperledger/fabric-javaenv:1.4
RUN rm -rf /root/.gradle
RUN rm -rf /opt/gradle
ADD ./gradle.zip /opt/
RUN unzip -o /opt/gradle.zip -d /opt/
ADD ./.gradle.zip /root/.gradle/
RUN unzip -o /root/.gradle/.gradle.zip -d /root/.gradle
ENV PATH="/opt/gradle/gradle-6.3/bin:${PATH}"
ENV GRADLE_HOME="opt/gradle/gradle-6.3"
RUN chmod 777 /opt/gradle/gradle-6.3/bin/*
ENV JAVA_HOME="/opt/java/openjdk"
现在将 c:\users\your-user-name.gradle 文件夹内容(不是文件夹本身)压缩为 '.gradle.zip' 并将其放在上面的文件夹中。接下来还要放置gradle.zip(这将是下载的gradle软件,当你解压这个gradle.zip时,它应该有gradle-6.3在里面,那将有所有Gradle 软件。您可以在 'Dockerfile' 上面编辑,否则有相应的权限。
因为我 运行 在 windows 上安装了所有这些,所以我在我的机器上安装了 'docker desktop' 并且也选择了 'switch to linux containers'。如果您没有此软件,则需要安装此软件。再次假设您不在代理后面,您将不会遇到所有与代理相关的麻烦,并且 Docker 安装应该是无缝的。
接下来我们需要'build'docker图像使用上面'Dockerfile'.
Microsoft Windows [Version 10.0.17763.1217]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\sw\hlf-scripts\javaenv-image-2>dir
Volume in drive C is Windows
Volume Serial Number is AE8A-E101
Directory of C:\sw\hlf-scripts\javaenv-image-2
02-06-2020 00:20 <DIR> .
02-06-2020 00:20 <DIR> ..
02-06-2020 00:19 68,813,513 .gradle.zip
01-06-2020 21:21 412 Dockerfile
01-06-2020 17:15 101,876,236 gradle.zip
C:\sw\hlf-scripts\javaenv-image-2>docker build .
Sending build context to Docker daemon 170.7MB
Step 1/11 : FROM hyperledger/fabric-javaenv:1.4
---> 190c5452a677
Step 2/11 : RUN rm -rf /root/.gradle
---> Running in 1bee6799c989
Removing intermediate container 1bee6799c989
---> e80c78e7f151
Step 3/11 : RUN rm -rf /opt/gradle
---> Running in 8b92d2062a0e
Removing intermediate container 8b92d2062a0e
---> 9a8b7ebfd19a
Step 4/11 : ADD ./gradle.zip /opt/
---> 6c32d08ac3d6
Step 5/11 : RUN unzip -o /opt/gradle.zip -d /opt/
---> Running in db8bbf7af51c
Archive: /opt/gradle.zip
creating: /opt/gradle/
creating: /opt/gradle/gradle-6.3/
creating: /opt/gradle/gradle-6.3/bin/
inflating: /opt/gradle/gradle-6.3/bin/gradle
inflating: /opt/gradle/gradle-6.3/bin/gradle.bat
...
inflating: /opt/gradle/gradle-6.3/lib/xml-apis-1.4.01.jar
inflating: /opt/gradle/gradle-6.3/LICENSE
inflating: /opt/gradle/gradle-6.3/NOTICE
inflating: /opt/gradle/gradle-6.3/README
Removing intermediate container db8bbf7af51c
---> 00b1723e518d
Step 6/11 : ADD ./.gradle.zip /root/.gradle/
---> 19cab7daafba
Step 7/11 : RUN unzip -o /root/.gradle/.gradle.zip -d /root/.gradle
---> Running in cda0aad70e6f
Archive: /root/.gradle/.gradle.zip
creating: /root/.gradle/6.3/
creating: /root/.gradle/6.3/fileChanges/
extracting: /root/.gradle/6.3/fileChanges/last-build.bin
creating: /root/.gradle/6.3/fileHashes/
...
extracting: /root/.gradle/vcs-1/gc.properties
creating: /root/.gradle/workers/
Removing intermediate container cda0aad70e6f
---> bd42d756dcf7
Step 8/11 : ENV PATH="/opt/gradle/gradle-6.3/bin:${PATH}"
---> Running in 3d84e00c5b82
Removing intermediate container 3d84e00c5b82
---> ef445b162906
Step 9/11 : ENV GRADLE_HOME="opt/gradle/gradle-6.3"
---> Running in 41c1a2017e9f
Removing intermediate container 41c1a2017e9f
---> c77880c756fd
Step 10/11 : RUN chmod 777 /opt/gradle/gradle-6.3/bin/*
---> Running in 77eb321c94ce
Removing intermediate container 77eb321c94ce
---> 3e4e65c47c61
Step 11/11 : ENV JAVA_HOME="/opt/java/openjdk"
---> Running in 4bc72d56e33d
Removing intermediate container 4bc72d56e33d
---> eba22c19da02
Successfully built eba22c19da02
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
C:\sw\hlf-scripts\javaenv-image-2>
检查 docker 图片列表,您应该可以在其中找到新创建的图片。在下面的列表中,看到第一个,即现在创建的那个。它有 REPOSITORY 和 TAG 作为 .观察这个新创建的图像的 IMAGEID 是 'eba22c19da02'。这稍后将在下面的命令中使用。
C:\sw\hlf-scripts\javaenv-image-2>docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> eba22c19da02 4 minutes ago 4.94GB
dev-peer0.org2.example.com-fabcar-1.0-264b0a1cb5efbecaac5cf8990339c24474dc8435c6e10f10f2be565d555d0e94 latest 32aca2e8365e 5 hours ago 4.58GB
dev-peer0.org1.example.com-fabcar-1.0-5c906e402ed29f20260ae42283216aa75549c571e2e380f3615826365d8269ba latest 89f8611e67f7 5 hours ago 4.58GB
hyperledger/fabric-javaenv 1.4 190c5452a677 22 hours ago 4.56GB
hyperledger/fabric-ccenv 1.4 774f228847d4 37 hours ago 1.79GB
openjdk latest 0ce6496aae74 6 weeks ago 497MB
hyperledger/fabric-ca 1.4 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca 1.4.6 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca latest 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-tools 1.4.6 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-tools latest 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-orderer 1.4 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer 1.4.6 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer latest 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-peer 1.4 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer 1.4.6 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer latest 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-zookeeper 0.4 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper 0.4.18 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper latest ede9389347db 7 months ago 276MB
hyperledger/fabric-kafka 0.4 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka 0.4.18 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka latest caaae0474ef2 7 months ago 270MB
hyperledger/fabric-couchdb 0.4 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb 0.4.18 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb latest d369d4eaa0fd 7 months ago 261MB
现在我们要告诉 docker 使用这个新创建的图像作为 'hyperledger/fabric-javaenv' 图像(稍后将在 HLF 网络创建期间由 HLF 拾取)。对于所有这些,我正在 运行ning HLF 1.4,下面的标签中给出了“:1.4”。命令为 运行 后,您现在可以观察到 'eba22c19da02' 现在填充为 'hyperledger/fabric-javaenv',TAG 为 1.4
C:\sw\hlf-scripts\javaenv-image-2>docker tag eba22c19da02 hyperledger/fabric-javaenv:1.4
C:\sw\hlf-scripts\javaenv-image-2>docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-javaenv 1.4 eba22c19da02 8 minutes ago 4.94GB
dev-peer0.org2.example.com-fabcar-1.0-264b0a1cb5efbecaac5cf8990339c24474dc8435c6e10f10f2be565d555d0e94 latest 32aca2e8365e 5 hours ago 4.58GB
dev-peer0.org1.example.com-fabcar-1.0-5c906e402ed29f20260ae42283216aa75549c571e2e380f3615826365d8269ba latest 89f8611e67f7 5 hours ago 4.58GB
hyperledger/fabric-ccenv 1.4 774f228847d4 37 hours ago 1.79GB
openjdk latest 0ce6496aae74 6 weeks ago 497MB
hyperledger/fabric-ca 1.4 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca 1.4.6 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-ca latest 3b96a893c1e4 3 months ago 150MB
hyperledger/fabric-tools 1.4.6 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-tools latest 0f9743ac0662 3 months ago 1.49GB
hyperledger/fabric-orderer 1.4 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer 1.4.6 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-orderer latest 84eaba5388e7 3 months ago 120MB
hyperledger/fabric-peer 1.4 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer 1.4.6 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-peer latest 5a52faa5d8c2 3 months ago 128MB
hyperledger/fabric-zookeeper 0.4 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper 0.4.18 ede9389347db 7 months ago 276MB
hyperledger/fabric-zookeeper latest ede9389347db 7 months ago 276MB
hyperledger/fabric-kafka 0.4 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka 0.4.18 caaae0474ef2 7 months ago 270MB
hyperledger/fabric-kafka latest caaae0474ef2 7 months ago 270MB
hyperledger/fabric-couchdb 0.4 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb 0.4.18 d369d4eaa0fd 7 months ago 261MB
hyperledger/fabric-couchdb latest d369d4eaa0fd 7 months ago 261MB
C:\sw\hlf-scripts\javaenv-image-2>
现在继续您的 Java HLF 网络创建,您的链码安装和实例化应该会成功。