-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.xml
7830 lines (7830 loc) · 779 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>凉都小道</title><link>https://ronggle.com/</link><description>Recent content on 凉都小道</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Soi</copyright><lastBuildDate>Fri, 21 Jun 2024 13:44:30 +0800</lastBuildDate><atom:link href="https://ronggle.com/index.xml" rel="self" type="application/rss+xml"/><item><title>回顾过去这几年</title><link>https://ronggle.com/2024/memoirs-at-2024/</link><pubDate>Fri, 21 Jun 2024 13:44:30 +0800</pubDate><guid>https://ronggle.com/2024/memoirs-at-2024/</guid><description/></item><item><title>关于我</title><link>https://ronggle.com/about/</link><pubDate>Sun, 06 Mar 2022 00:00:00 +0000</pubDate><guid>https://ronggle.com/about/</guid><description><h2 id="基本信息">基本信息
</h2><p><strong>杨昌荣</strong> - <strong>Java软件工程师 8年</strong></p>
<h3 id="联系方式">联系方式
</h3><blockquote>
<p>手机 MTg3MjU3ODY0NjEK</p>
<p>邮箱 eWNyeHVuQDE2My5jb20K</p>
<p>地址 广东省广州市番禺区</p>
</blockquote>
<h2 id="教育经历">教育经历
</h2><h3 id="本科">本科
</h3><blockquote>
<p>2011-09 至 2015-06, <a class="link" href="http://paisi.edu.cn/" target="_blank" rel="noopener"
>重庆工商大学派斯学院</a>, 计算机科学与技术.</p>
</blockquote>
<h2 id="工作经历">工作经历
</h2><h3 id="java软件工程师---重庆林恩科技有限公司2015-05-至-2015-12">Java软件工程师 - 重庆林恩科技有限公司(2015-05 至 2015-12)
</h3><blockquote>
<p>负责开发与维护广告分发的后台管理系统,以及分发广告Android SDK。</p>
</blockquote>
<h3 id="java软件工程师---中国民航信息网络股份有限公司重庆研发中心httpwwwtravelskynet2016-02-至-2018-05">Java软件工程师 - <a class="link" href="http://www.travelsky.net/" target="_blank" rel="noopener"
>中国民航信息网络股份有限公司重庆研发中心</a>(2016-02 至 2018-05)
</h3><blockquote>
<p>负责基础开发框架,专注于权限控制和基础数据,为业务系统提供技术支持。</p>
</blockquote>
<h3 id="java软件工程师---重庆金融资产交易所有限责任公司httpwwwcqfaecom2018-08-至-今">Java软件工程师 - <a class="link" href="http://www.cqfae.com/" target="_blank" rel="noopener"
>重庆金融资产交易所有限责任公司</a>(2018-08 至 今)
</h3><blockquote>
<p>负责微服务基础组件开发与维护,参与实现创新型项目。</p>
</blockquote>
<h2 id="项目经历">项目经历
</h2><h3 id="极速传媒---重庆林恩科技有限公司">极速传媒 - 重庆林恩科技有限公司
</h3><blockquote>
<p><strong>角色</strong> 后端开发</p>
<p><strong>职责</strong> 负责核心模块开发与维护</p>
<p><strong>时间</strong> 2015年05月 - 2015年12月</p>
<p><strong>技术栈</strong> Struts2,Spring,MySQL,MongoDB</p>
<p>极速传媒是塔科技核新业务广告分发的后台管理系统,主要通过Android SDK采集用户行为以及与分发广告。</p>
</blockquote>
<h3 id="新一代基础开发框架---中国民航信息网络股份有限公司重庆研发中心">新一代基础开发框架 - 中国民航信息网络股份有限公司重庆研发中心
</h3><blockquote>
<p><strong>角色</strong> 项目组长</p>
<p><strong>职责</strong> 负责核心模块扩展、开发,并保障项目进度和质量;对项目老旧模块进行重构,改善代码质量以及效率;同时负责项目代码Code Review以及提出改善建议;根据项目需要,引进新的技术,升级项目架构。</p>
<p><strong>时间</strong> 2016年2月 - 2018年5月</p>
<p><strong>技术栈</strong> Spring,SpringMVC,Spring Security,Hibernate,PostgreSQL,Seajs,Quartz</p>
<p>新一代基础开发框架是中国航信新一代产品线下的核心基础组件,为新一代产品线下所有项目提供基础服务,包含用户管理,权限控制,以及业务基础数据等。</p>
</blockquote>
<h3 id="新一代电子杂费单---中国民航信息息络股份有限公司重庆研发中心">新一代电子杂费单 - 中国民航信息息络股份有限公司重庆研发中心
</h3><blockquote>
<p><strong>角色</strong> 技术组长</p>
<p><strong>职责</strong> 完成项目框架设计及搭建工作、以及业务核心组件集成;监控代码质量,参与Code Review,制定Code Style等。</p>
<p><strong>时间</strong> 2016年2月 - 2018年5月</p>
<p><strong>技术栈</strong> Spring,Seajs,Handlebars</p>
<p>电子杂费单,是由航空公司或其授权的代理机构出具的,符合运价规则的杂费费用电子记录,也是一种记录航空杂费的凭证证,确认相关费用的销售并跟踪其使用的方法。</p>
</blockquote>
<h3 id="区块链运营管理平台---重庆金融资产交易所有限责任公司">区块链运营管理平台 - 重庆金融资产交易所有限责任公司
</h3><blockquote>
<p><strong>角色</strong> 后端开发</p>
<p><strong>职责</strong> 负责核心模块开发;基于Hyperledger Fabric,链接下层运行环境,为上层服务提供基础支撑;监控代码质量,参与Code Review。</p>
<p><strong>时间</strong> 2018年9月 - 2019年1月</p>
<p><strong>技术栈</strong> Spring Boot,MySQL,RabbitMQ,Hyperledger Fabric,Docker,Kubernetes</p>
<p>区块链运营管理平台是基于Hyperledger Fabric进行开发的BaaS(Blockchain as a Service),提供一键式、可视化、跨地域快速部署企业级区块链环境的能力,快速构建稳定、安全的生产级区块链环境,应对在区块链部署、运维、管理、应用开放等方面的挑战。</p>
</blockquote>
<h3 id="统一消息平台---重庆金融资产交易所有限责任公司">统一消息平台 - 重庆金融资产交易所有限责任公司
</h3><blockquote>
<p><strong>角色</strong> 后端开发</p>
<p><strong>职责</strong> 负责核心模块设计、开发,提供标准接口,为业务平台提供统一高效的消息对接;监控代码质量,参与Code Review。</p>
<p><strong>时间</strong> 2018年4月 - 2019年7月</p>
<p><strong>技术栈</strong> Spring Boot,MySQL,RabbitMQ,RocketMQ,SPI</p>
<p>统一消息平台是为了解决各业务平台在对接消息(短信,邮件,内部签报)平台时所应对的复杂问题,对各种内外部平台进行了整合,由统一消息消息平台一一对接,为业务平台提供提供标准接口,简化业务平台开发流程,节约对接成本。</p>
</blockquote></description></item><item><title>使用Docker Swarm部署Hyperledger Fabric</title><link>https://ronggle.com/2019/hyperledger-fabric-on-swarm/</link><pubDate>Wed, 20 Nov 2019 13:55:59 +0800</pubDate><guid>https://ronggle.com/2019/hyperledger-fabric-on-swarm/</guid><description><img src="https://ronggle.com/2019/hyperledger-fabric-on-swarm/hyperledger-fabric-on-swarm.svg" alt="Featured image of post 使用Docker Swarm部署Hyperledger Fabric" /><h2 id="什么是区块链">什么是区块链?
</h2><p>从纯技术的角度来看,就是将一个个数据区块按照一定的顺序,将其连接起来;从业务现象来看,区块链网络的核心是就是分布式账本,记录了网络上发生的所有交易。</p>
<h3 id="区块链的特性">区块链的特性
</h3><ul>
<li>
<p><strong>区中心化(分散式)</strong> 通常被描述为<code>去中心化</code>的,因为每一个参与者都具有相同的账本信息。</p>
</li>
<li>
<p><strong>协作</strong> 每个参与者共同<code>协作</code>来维护它,不是单一参与者说了算。</p>
</li>
<li>
<p><strong>不可篡改</strong> 区块链被设计为只可以追加,使用了加密技术来保证一旦将交易添加到账本中,就不能对其进行修改。</p>
</li>
</ul>
<h2 id="什么是hyperledger-fabric">什么是Hyperledger Fabric?
</h2><p>Linux基金会于2015年创建了Hyperledger项目,以推进跨行业的区块链技术。Hyperledger Fabric是Hyperledger中的区块链项目之一。像其他区块链技术一样,它具有分类帐,使用智能合约,并且是参与者用来管理其交易的系统。Hyperledger Fabric与其他区块链系统最大的不同体现在私有和许可。
<img src="https://ronggle.com/2019/hyperledger-fabric-on-swarm/HL_Greenhouse_Current_10.3.19.png"
width="1800"
height="728"
srcset="https://ronggle.com/2019/hyperledger-fabric-on-swarm/HL_Greenhouse_Current_10.3.19_hue2d37f9fc31acaf70ea1aace481786ce_219495_480x0_resize_box_3.png 480w, https://ronggle.com/2019/hyperledger-fabric-on-swarm/HL_Greenhouse_Current_10.3.19_hue2d37f9fc31acaf70ea1aace481786ce_219495_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="图片来源:https://www.hyperledger.org/wp-content/uploads/2019/10/HL_Greenhouse_Current_10.3.19.png"
class="gallery-image"
data-flex-grow="247"
data-flex-basis="593px"
></p>
<p>Hyperledger Fabric是一个(平台),提供分布式账本解决方案的平台,Hyperledger Fabric由模块化架构支撑,并具备<code>极佳的保密性</code>、<code>可伸缩性</code>、<code>灵活性</code>、<code>可扩展性</code>,Hyperledger Fabric被设计成(模块直接插拔,适用多种场景),支持不同的模块组件直接拔插启用,并能适应在经济生态系统中错综复杂的各种场景。</p>
<h3 id="hyperledger-fabric的交易流程">Hyperledger Fabric的交易流程
</h3><p><img src="https://ronggle.com/2019/hyperledger-fabric-on-swarm/fabric-workflow.png"
width="844"
height="370"
srcset="https://ronggle.com/2019/hyperledger-fabric-on-swarm/fabric-workflow_huf0569ae76bb9d173496971cf7d9cde0b_43872_480x0_resize_box_3.png 480w, https://ronggle.com/2019/hyperledger-fabric-on-swarm/fabric-workflow_huf0569ae76bb9d173496971cf7d9cde0b_43872_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="图片来自网络"
class="gallery-image"
data-flex-grow="228"
data-flex-basis="547px"
></p>
<blockquote>
<p>更多关于Hyperledger Fabric的内容,可以查看<a class="link" href="https://hyperledger-fabric.readthedocs.io/" target="_blank" rel="noopener"
>官方文档</a>以及<a class="link" href="https://hyperledger-fabric-cn.readthedocs.io/" target="_blank" rel="noopener"
>官方文档翻译</a></p>
</blockquote>
<h2 id="怎么使用hyperledger-fabric">怎么使用Hyperledger Fabric
</h2><blockquote>
<p>以下内容基本上是交流时进行的实践步骤中涉及的配置和脚本,如果你想快捷体验,可以<a class="link" href="#%e6%80%bb%e7%bb%93" >传送</a>至后面</p>
</blockquote>
<h3 id="准备阶段">准备阶段
</h3><ul>
<li>Docker</li>
<li>Docker Swarm</li>
<li>Hyperledger Fabric镜像</li>
</ul>
<h3 id="hyperledger-fabric镜像">Hyperledger Fabric镜像
</h3><p>Docker安装,以及Docker Swarm初始化,如果你还不了解,那你可以先自行<a class="link" href="https://www.dogedoge.com/" target="_blank" rel="noopener"
>多吉</a>或者<a class="link" href="https://cn.bing.com/" target="_blank" rel="noopener"
>必应</a>一下。</p>
<p>这里我们需要拉取一下Hyperledger Fabric镜像,由于在2.0之前,Hyperledger Fabric镜像的体积都比较大,拉取比较慢,虽然现在2.0还处于alpha阶段,但是我们搭建一个是开发网络,是没有什么影响的。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/usr/bin/env bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl">clear
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">FABRIC_TAG</span><span class="o">=</span>2.0
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">function</span> pullImages<span class="o">()</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">for</span> image in peer orderer ccenv tools ca<span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl"> <span class="nb">echo</span> <span class="s2">&#34;Pull image hyperledger/fabric-</span><span class="nv">$image</span><span class="s2">:</span><span class="nv">$FABRIC_TAG</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"> docker pull hyperledger/fabric-<span class="s2">&#34;</span><span class="nv">$image</span><span class="s2">&#34;</span>:<span class="s2">&#34;</span><span class="nv">$FABRIC_TAG</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"> sleep <span class="m">1</span>
</span></span><span class="line"><span class="cl"> <span class="k">done</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Pull images for hyperledger fabric network.&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">pullImages
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="创建docker网络">创建Docker网络
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/usr/bin/env bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl">clear
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">DOCKER_NETWORK_NAME</span><span class="o">=</span>baas
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Create docker network </span><span class="nv">$DOCKER_NETWORK_NAME</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">docker network create --driver overlay --subnet<span class="o">=</span>10.200.1.0/24 --attachable <span class="s2">&#34;</span><span class="nv">$DOCKER_NETWORK_NAME</span><span class="s2">&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="准备hyperledger-fabric网络配置">准备Hyperledger Fabric网络配置
</h3><ul>
<li>网络成员加密材料配置</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span><span class="lnt">51
</span><span class="lnt">52
</span><span class="lnt">53
</span><span class="lnt">54
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># &#34;OrdererOrgs&#34; - Definition of organizations managing orderer nodes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">OrdererOrgs</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Orderer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l">Orderer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Domain</span><span class="p">:</span><span class="w"> </span><span class="l">cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">CA</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Country</span><span class="p">:</span><span class="w"> </span><span class="l">CN</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Province</span><span class="p">:</span><span class="w"> </span><span class="l">Chongqing</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Locality</span><span class="p">:</span><span class="w"> </span><span class="l">Chongqing</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># &#34;Specs&#34; - See PeerOrgs below for complete description</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Specs</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Hostname</span><span class="p">:</span><span class="w"> </span><span class="l">orderer0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Hostname</span><span class="p">:</span><span class="w"> </span><span class="l">orderer1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Hostname</span><span class="p">:</span><span class="w"> </span><span class="l">orderer2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Hostname</span><span class="p">:</span><span class="w"> </span><span class="l">orderer3</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Hostname</span><span class="p">:</span><span class="w"> </span><span class="l">orderer4</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># &#34;PeerOrgs&#34; - Definition of organizations managing peer nodes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">PeerOrgs</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># storage org for cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l">storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Domain</span><span class="p">:</span><span class="w"> </span><span class="l">storage.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">EnableNodeOUs</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">CA</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Country</span><span class="p">:</span><span class="w"> </span><span class="l">CN</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Province</span><span class="p">:</span><span class="w"> </span><span class="l">Chongqing</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Locality</span><span class="p">:</span><span class="w"> </span><span class="l">Chongqing</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Template</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Count</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Users</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Count</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># vhost org for cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># ---------------------------------------------------------------------------</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l">vhost</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Domain</span><span class="p">:</span><span class="w"> </span><span class="l">vhost.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">EnableNodeOUs</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">CA</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Country</span><span class="p">:</span><span class="w"> </span><span class="l">CN</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Province</span><span class="p">:</span><span class="w"> </span><span class="l">Chongqing</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Locality</span><span class="p">:</span><span class="w"> </span><span class="l">Chongqing</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Template</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Count</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Users</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Count</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>网络初始化以及通道配置</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt"> 10
</span><span class="lnt"> 11
</span><span class="lnt"> 12
</span><span class="lnt"> 13
</span><span class="lnt"> 14
</span><span class="lnt"> 15
</span><span class="lnt"> 16
</span><span class="lnt"> 17
</span><span class="lnt"> 18
</span><span class="lnt"> 19
</span><span class="lnt"> 20
</span><span class="lnt"> 21
</span><span class="lnt"> 22
</span><span class="lnt"> 23
</span><span class="lnt"> 24
</span><span class="lnt"> 25
</span><span class="lnt"> 26
</span><span class="lnt"> 27
</span><span class="lnt"> 28
</span><span class="lnt"> 29
</span><span class="lnt"> 30
</span><span class="lnt"> 31
</span><span class="lnt"> 32
</span><span class="lnt"> 33
</span><span class="lnt"> 34
</span><span class="lnt"> 35
</span><span class="lnt"> 36
</span><span class="lnt"> 37
</span><span class="lnt"> 38
</span><span class="lnt"> 39
</span><span class="lnt"> 40
</span><span class="lnt"> 41
</span><span class="lnt"> 42
</span><span class="lnt"> 43
</span><span class="lnt"> 44
</span><span class="lnt"> 45
</span><span class="lnt"> 46
</span><span class="lnt"> 47
</span><span class="lnt"> 48
</span><span class="lnt"> 49
</span><span class="lnt"> 50
</span><span class="lnt"> 51
</span><span class="lnt"> 52
</span><span class="lnt"> 53
</span><span class="lnt"> 54
</span><span class="lnt"> 55
</span><span class="lnt"> 56
</span><span class="lnt"> 57
</span><span class="lnt"> 58
</span><span class="lnt"> 59
</span><span class="lnt"> 60
</span><span class="lnt"> 61
</span><span class="lnt"> 62
</span><span class="lnt"> 63
</span><span class="lnt"> 64
</span><span class="lnt"> 65
</span><span class="lnt"> 66
</span><span class="lnt"> 67
</span><span class="lnt"> 68
</span><span class="lnt"> 69
</span><span class="lnt"> 70
</span><span class="lnt"> 71
</span><span class="lnt"> 72
</span><span class="lnt"> 73
</span><span class="lnt"> 74
</span><span class="lnt"> 75
</span><span class="lnt"> 76
</span><span class="lnt"> 77
</span><span class="lnt"> 78
</span><span class="lnt"> 79
</span><span class="lnt"> 80
</span><span class="lnt"> 81
</span><span class="lnt"> 82
</span><span class="lnt"> 83
</span><span class="lnt"> 84
</span><span class="lnt"> 85
</span><span class="lnt"> 86
</span><span class="lnt"> 87
</span><span class="lnt"> 88
</span><span class="lnt"> 89
</span><span class="lnt"> 90
</span><span class="lnt"> 91
</span><span class="lnt"> 92
</span><span class="lnt"> 93
</span><span class="lnt"> 94
</span><span class="lnt"> 95
</span><span class="lnt"> 96
</span><span class="lnt"> 97
</span><span class="lnt"> 98
</span><span class="lnt"> 99
</span><span class="lnt">100
</span><span class="lnt">101
</span><span class="lnt">102
</span><span class="lnt">103
</span><span class="lnt">104
</span><span class="lnt">105
</span><span class="lnt">106
</span><span class="lnt">107
</span><span class="lnt">108
</span><span class="lnt">109
</span><span class="lnt">110
</span><span class="lnt">111
</span><span class="lnt">112
</span><span class="lnt">113
</span><span class="lnt">114
</span><span class="lnt">115
</span><span class="lnt">116
</span><span class="lnt">117
</span><span class="lnt">118
</span><span class="lnt">119
</span><span class="lnt">120
</span><span class="lnt">121
</span><span class="lnt">122
</span><span class="lnt">123
</span><span class="lnt">124
</span><span class="lnt">125
</span><span class="lnt">126
</span><span class="lnt">127
</span><span class="lnt">128
</span><span class="lnt">129
</span><span class="lnt">130
</span><span class="lnt">131
</span><span class="lnt">132
</span><span class="lnt">133
</span><span class="lnt">134
</span><span class="lnt">135
</span><span class="lnt">136
</span><span class="lnt">137
</span><span class="lnt">138
</span><span class="lnt">139
</span><span class="lnt">140
</span><span class="lnt">141
</span><span class="lnt">142
</span><span class="lnt">143
</span><span class="lnt">144
</span><span class="lnt">145
</span><span class="lnt">146
</span><span class="lnt">147
</span><span class="lnt">148
</span><span class="lnt">149
</span><span class="lnt">150
</span><span class="lnt">151
</span><span class="lnt">152
</span><span class="lnt">153
</span><span class="lnt">154
</span><span class="lnt">155
</span><span class="lnt">156
</span><span class="lnt">157
</span><span class="lnt">158
</span><span class="lnt">159
</span><span class="lnt">160
</span><span class="lnt">161
</span><span class="lnt">162
</span><span class="lnt">163
</span><span class="lnt">164
</span><span class="lnt">165
</span><span class="lnt">166
</span><span class="lnt">167
</span><span class="lnt">168
</span><span class="lnt">169
</span><span class="lnt">170
</span><span class="lnt">171
</span><span class="lnt">172
</span><span class="lnt">173
</span><span class="lnt">174
</span><span class="lnt">175
</span><span class="lnt">176
</span><span class="lnt">177
</span><span class="lnt">178
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Organizations</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="cp">&amp;cloudLabs</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l">cloudLabs</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ID</span><span class="p">:</span><span class="w"> </span><span class="l">cloudLabsMSP</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">MSPDir</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/msp</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Policies</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Readers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Signature</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;OR(&#39;cloudLabsMSP.member&#39;)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Writers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Signature</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;OR(&#39;cloudLabsMSP.member&#39;)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Admins</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Signature</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;OR(&#39;cloudLabsMSP.admin&#39;)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="cp">&amp;storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l">storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ID</span><span class="p">:</span><span class="w"> </span><span class="l">storageMSP</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">MSPDir</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/peerOrganizations/storage.cloud-labs.io/msp</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Policies</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Readers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Signature</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;OR(&#39;storageMSP.admin&#39;, &#39;storageMSP.peer&#39;, &#39;storageMSP.client&#39;)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Writers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Signature</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;OR(&#39;storageMSP.admin&#39;, &#39;storageMSP.client&#39;)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Admins</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Signature</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;OR(&#39;storageMSP.admin&#39;)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">AnchorPeers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Host</span><span class="p">:</span><span class="w"> </span><span class="l">peer0.storage.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Port</span><span class="p">:</span><span class="w"> </span><span class="m">7051</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="cp">&amp;vhost</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Name</span><span class="p">:</span><span class="w"> </span><span class="l">vhost</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ID</span><span class="p">:</span><span class="w"> </span><span class="l">vhostMSP</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">MSPDir</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/peerOrganizations/vhost.cloud-labs.io/msp</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Policies</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Readers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Signature</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;OR(&#39;vhostMSP.admin&#39;, &#39;vhostMSP.peer&#39;, &#39;vhostMSP.client&#39;)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Writers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Signature</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;OR(&#39;vhostMSP.admin&#39;, &#39;vhostMSP.client&#39;)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Admins</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Signature</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;OR(&#39;vhostMSP.admin&#39;)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">AnchorPeers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Host</span><span class="p">:</span><span class="w"> </span><span class="l">peer0.vhost.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Port</span><span class="p">:</span><span class="w"> </span><span class="m">7051</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Capabilities</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Channel</span><span class="p">:</span><span class="w"> </span><span class="cp">&amp;ChannelCapabilities</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">V1_3</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Orderer</span><span class="p">:</span><span class="w"> </span><span class="cp">&amp;OrdererCapabilities</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">V1_1</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Application</span><span class="p">:</span><span class="w"> </span><span class="cp">&amp;ApplicationCapabilities</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">V1_3</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">V1_2</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">V1_1</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Application</span><span class="p">:</span><span class="w"> </span><span class="cp">&amp;ApplicationDefaults</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Organizations</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Policies</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Readers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">ImplicitMeta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;ANY Readers&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Writers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">ImplicitMeta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;ANY Writers&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Admins</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">ImplicitMeta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;MAJORITY Admins&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Capabilities</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*ApplicationCapabilities</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Orderer</span><span class="p">:</span><span class="w"> </span><span class="cp">&amp;OrdererDefaults</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">OrdererType</span><span class="p">:</span><span class="w"> </span><span class="l">etcdraft</span><span class="w"> </span><span class="c"># solo, kafka</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">EtcdRaft</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Consenters</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Host</span><span class="p">:</span><span class="w"> </span><span class="l">orderer0.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Port</span><span class="p">:</span><span class="w"> </span><span class="m">7050</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ClientTLSCert</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/orderers/orderer0.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ServerTLSCert</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/orderers/orderer0.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Host</span><span class="p">:</span><span class="w"> </span><span class="l">orderer1.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Port</span><span class="p">:</span><span class="w"> </span><span class="m">7050</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ClientTLSCert</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/orderers/orderer1.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ServerTLSCert</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/orderers/orderer1.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Host</span><span class="p">:</span><span class="w"> </span><span class="l">orderer2.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Port</span><span class="p">:</span><span class="w"> </span><span class="m">7050</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ClientTLSCert</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/orderers/orderer2.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ServerTLSCert</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/orderers/orderer2.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Host</span><span class="p">:</span><span class="w"> </span><span class="l">orderer3.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Port</span><span class="p">:</span><span class="w"> </span><span class="m">7050</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ClientTLSCert</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/orderers/orderer3.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ServerTLSCert</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/orderers/orderer3.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Host</span><span class="p">:</span><span class="w"> </span><span class="l">orderer4.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Port</span><span class="p">:</span><span class="w"> </span><span class="m">7050</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ClientTLSCert</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/orderers/orderer4.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ServerTLSCert</span><span class="p">:</span><span class="w"> </span><span class="l">./artifacts/crypto-config/ordererOrganizations/cloud-labs.io/orderers/orderer4.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Addresses</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">orderer0.cloud-labs.io:7050</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">orderer1.cloud-labs.io:7050</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">orderer2.cloud-labs.io:7050</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">orderer3.cloud-labs.io:7050</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">orderer4.cloud-labs.io:7050</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">BatchTimeout</span><span class="p">:</span><span class="w"> </span><span class="l">2s</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">BatchSize</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">MaxMessageCount</span><span class="p">:</span><span class="w"> </span><span class="m">10</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">AbsoluteMaxBytes</span><span class="p">:</span><span class="w"> </span><span class="m">99</span><span class="w"> </span><span class="l">MB</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">PreferredMaxBytes</span><span class="p">:</span><span class="w"> </span><span class="m">512</span><span class="w"> </span><span class="l">KB</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Organizations</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="cp">*cloudLabs</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Policies</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Readers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">ImplicitMeta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;ANY Readers&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Writers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">ImplicitMeta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;ANY Writers&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Admins</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">ImplicitMeta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;MAJORITY Admins&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">BlockValidation</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">ImplicitMeta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;ANY Writers&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Channel</span><span class="p">:</span><span class="w"> </span><span class="cp">&amp;ChannelDefaults</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Policies</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Who may invoke the &#39;Deliver&#39; API</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Readers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">ImplicitMeta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;ANY Readers&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Who may invoke the &#39;Broadcast&#39; API</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Writers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">ImplicitMeta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;ANY Writers&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># By default, who may modify elements at this config level</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Admins</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">ImplicitMeta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Rule</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;MAJORITY Admins&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Capabilities</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*ChannelCapabilities</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Profiles</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">OrdererGenesis</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*ChannelDefaults</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Capabilities</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*ChannelCapabilities</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Orderer</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*OrdererDefaults</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Capabilities</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*OrdererCapabilities</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Application</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*ApplicationDefaults</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Organizations</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*cloudLabs</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Consortiums</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">SeriesConsortium</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Organizations</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="cp">*storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="cp">*vhost</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">SeriesChannel</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Consortium</span><span class="p">:</span><span class="w"> </span><span class="l">SeriesConsortium</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*ChannelDefaults</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Application</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*ApplicationDefaults</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Organizations</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="cp">*storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="cp">*vhost</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Capabilities</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&lt;&lt;</span><span class="p">:</span><span class="w"> </span><span class="cp">*ApplicationCapabilities</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h3 id="生成证书和创世区块">生成证书和创世区块
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/usr/bin/env bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl">clear
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">FABRIC_TAG</span><span class="o">=</span>2.0
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Generate crypto material&#34;</span>
</span></span><span class="line"><span class="cl">docker run -it --rm <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -v <span class="s2">&#34;</span><span class="nv">$PWD</span><span class="s2">&#34;</span>:/hyperledger-fabric-network <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -w /hyperledger-fabric-network <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -e <span class="s2">&#34;FABRIC_CFG_PATH=/hyperledger-fabric-network&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> hyperledger/fabric-tools:<span class="nv">$FABRIC_TAG</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> sh -c <span class="s2">&#34;rm -rf ./artifacts/crypto-config/* &amp;&amp; cryptogen generate --config=./crypto-config.yaml --output=./artifacts/crypto-config&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/usr/bin/env bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl">clear
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">FABRIC_TAG</span><span class="o">=</span>2.0
</span></span><span class="line"><span class="cl"><span class="nv">PROFILE</span><span class="o">=</span>OrdererGenesis
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Generate genesis block for orderer&#34;</span>
</span></span><span class="line"><span class="cl">docker run -it --rm <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -v <span class="s2">&#34;</span><span class="nv">$PWD</span><span class="s2">&#34;</span>:/hyperledger-fabric-network <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -w /hyperledger-fabric-network <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -e <span class="s2">&#34;FABRIC_CFG_PATH=/hyperledger-fabric-network&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> hyperledger/fabric-tools:<span class="nv">$FABRIC_TAG</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> sh -c <span class="s2">&#34;rm -f ./artifacts/config/genesis.block &amp;&amp; configtxgen -profile </span><span class="nv">$PROFILE</span><span class="s2"> -outputBlock ./artifacts/config/genesis.block -channelID syschain&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="生成channel交易配置">生成Channel交易配置
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/usr/bin/env bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl">clear
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">FABRIC_TAG</span><span class="o">=</span>2.0
</span></span><span class="line"><span class="cl"><span class="nv">PROFILE</span><span class="o">=</span>SeriesChannel
</span></span><span class="line"><span class="cl"><span class="nv">CHANNEL</span><span class="o">=</span>alice
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Generate channel configuration transaction&#34;</span>
</span></span><span class="line"><span class="cl">docker run -it --rm <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -v <span class="s2">&#34;</span><span class="nv">$PWD</span><span class="s2">&#34;</span>:/hyperledger-fabric-network <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -w /hyperledger-fabric-network <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -e <span class="s2">&#34;FABRIC_CFG_PATH=/hyperledger-fabric-network&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> hyperledger/fabric-tools:<span class="nv">$FABRIC_TAG</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> sh -c <span class="s2">&#34;rm -f ./artifacts/config/</span><span class="nv">$CHANNEL</span><span class="s2">.tx &amp;&amp; configtxgen -profile </span><span class="nv">$PROFILE</span><span class="s2"> -outputCreateChannelTx ./artifacts/config/</span><span class="nv">$CHANNEL</span><span class="s2">.tx -channelID </span><span class="nv">$CHANNEL</span><span class="s2">&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="配置docker-stack编排">配置docker stack编排
</h3><ul>
<li>docker-compose-storage.yaml</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span><span class="lnt">51
</span><span class="lnt">52
</span><span class="lnt">53
</span><span class="lnt">54
</span><span class="lnt">55
</span><span class="lnt">56
</span><span class="lnt">57
</span><span class="lnt">58
</span><span class="lnt">59
</span><span class="lnt">60
</span><span class="lnt">61
</span><span class="lnt">62
</span><span class="lnt">63
</span><span class="lnt">64
</span><span class="lnt">65
</span><span class="lnt">66
</span><span class="lnt">67
</span><span class="lnt">68
</span><span class="lnt">69
</span><span class="lnt">70
</span><span class="lnt">71
</span><span class="lnt">72
</span><span class="lnt">73
</span><span class="lnt">74
</span><span class="lnt">75
</span><span class="lnt">76
</span><span class="lnt">77
</span><span class="lnt">78
</span><span class="lnt">79
</span><span class="lnt">80
</span><span class="lnt">81
</span><span class="lnt">82
</span><span class="lnt">83
</span><span class="lnt">84
</span><span class="lnt">85
</span><span class="lnt">86
</span><span class="lnt">87
</span><span class="lnt">88
</span><span class="lnt">89
</span><span class="lnt">90
</span><span class="lnt">91
</span><span class="lnt">92
</span><span class="lnt">93
</span><span class="lnt">94
</span><span class="lnt">95
</span><span class="lnt">96
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;3&#39;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">networks</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">baas</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">external</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">baas</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">services</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ca0</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">hyperledger/fabric-ca:2.0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hostname</span><span class="p">:</span><span class="w"> </span><span class="l">ca0.storage.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">environment</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">FABRIC_CA_SERVER_CA_NAME=ca0.storage.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca/ca.storage.cloud-labs.io-cert.pem</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/ca/380edf74737d53b1cc324f1d6c06f8b35bdcbe89799dbdbf146d95da681daec2_sk</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">FABRIC_CA_SERVER_TLS_ENABLED=true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/tlsca/tlsca.storage.cloud-labs.io-cert.pem</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/tlsca/85d708dacaeb88897f6a3744e7cf84a53591049ab692c0ecd9c49a449a4050bf_sk</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">FABRIC_CA_SERVER_PORT=7054</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">command</span><span class="p">:</span><span class="w"> </span><span class="l">sh -c &#39;fabric-ca-server start -b admin:adminpw -d&#39;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ports</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="m">7054</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">networks</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">baas</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">aliases</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">ca0.storage.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">$PWD/artifacts/crypto-config/peerOrganizations/storage.cloud-labs.io/ca/:/etc/hyperledger/fabric-ca-server-config/ca/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">$PWD/artifacts/crypto-config/peerOrganizations/storage.cloud-labs.io/tlsca/:/etc/hyperledger/fabric-ca-server-config/tlsca/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">peer0</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">hyperledger/fabric-peer:2.0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hostname</span><span class="p">:</span><span class="w"> </span><span class="l">peer0.storage.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">environment</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">FABRIC_LOGGING_SPEC=INFO</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=baas</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_ID=peer0.storage.cloud-labs.io:7051</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_LOCALMSPID=storageMSP</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_ADDRESS=peer0.storage.cloud-labs.io:7051</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_LISTENADDRESS:0.0.0.0:7051</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_GOSSIP_USELEADERELECTION=true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_GOSSIP_ORGLEADER=false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.storage.cloud-labs.io:7051</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_PROFILE_ENABLED=true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_CHAINCODE_EXECUTETIMEOUT=300s</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_CHAINCODEADDRESS=peer0.storage.cloud-labs.io:7052</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_TLS_ENABLED=true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">command</span><span class="p">:</span><span class="w"> </span><span class="l">peer node start</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">networks</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">baas</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">aliases</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">peer0.storage.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ports</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="m">7051</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="m">7052</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="m">7053</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">/var/run/:/host/var/run/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">$PWD/artifacts/crypto-config/peerOrganizations/storage.cloud-labs.io/peers/peer0.storage.cloud-labs.io/msp:/etc/hyperledger/fabric/msp</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">$PWD/artifacts/crypto-config/peerOrganizations/storage.cloud-labs.io/peers/peer0.storage.cloud-labs.io/tls:/etc/hyperledger/fabric/tls</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cli</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">hyperledger/fabric-tools:2.0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">tty</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">stdin_open</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hostname</span><span class="p">:</span><span class="w"> </span><span class="l">cli.storage.cloud-labs.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">environment</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">GOPATH=/opt/gopath</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">FABRIC_LOGGING_SPEC=INFO</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=baas</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_ID=peer0.storage.cloud-labs.io:7051</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_LOCALMSPID=storageMSP</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_ADDRESS=peer0.storage.cloud-labs.io:7051</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/storage.cloud-labs.io/users/[email protected]/msp</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_TLS_ENABLED=true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/storage.cloud-labs.io/peers/peer0.storage.cloud-labs.io/tls/server.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/storage.cloud-labs.io/peers/peer0.storage.cloud-labs.io/tls/server.key</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/storage.cloud-labs.io/peers/peer0.storage.cloud-labs.io/tls/ca.crt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">ORDERER_SYSCHAN_ID=syschain</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/orderer/crypto/ordererOrganizations/cloud-labs.io/orderers/orderer0.cloud-labs.io/msp/tlscacerts/tlsca.cloud-labs.io-cert.pem</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">working_dir</span><span class="p">:</span><span class="w"> </span><span class="l">/opt/gopath/src/github.com/hyperledger/fabric/peer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">command</span><span class="p">:</span><span class="w"> </span><span class="l">/bin/bash</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">networks</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">baas</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">/var/run/:/host/var/run/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">$PWD/artifacts/chaincode:/opt/gopath/src</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">$PWD/artifacts/crypto-config/peerOrganizations:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">$PWD/artifacts/crypto-config/ordererOrganizations:/opt/gopath/src/github.com/hyperledger/fabric/orderer/crypto/ordererOrganizations</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">$PWD/artifacts/config:/opt/gopath/src/github.com/hyperledger/fabric/peer/config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">$PWD/artifacts/scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>docker-compose-vhost.yaml</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22