Ubuntu20.04 hyperledger fabric2.4基于Docker搭建blockchain-explorer

news2025/1/4 19:22:19

准备

  启动fabric测试网络。
  这里默认已经完成了Fabric测试网络搭建以及运行。
  后续会出Fabric安装,现在不会的就先去看别的博客

配置

1.在test-network 文件夹下面建立explorer文件夹:

mkdir explorer

2. 配置文件

2.1下载配置文件

先进文件夹

cd explorer

  下载配置文件。注意:如果出现网络问题则先sudo vi /etc/hosts,在里面添加185.199.110.133 raw.githubusercontent.com。但是可能还是会很慢,如果没耐心可以跳到2.2。

wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/examples/net1/config.json
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/examples/net1/connection-profile/test-network.json -P connection-profile
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/docker-compose.yaml

  成功后文件目录如下:
在这里插入图片描述

2.2自行配置

  如果2.1成功则跳过此步骤。
  可以直接打开wget后面的网址,复制里面的内容,然后创建文件。test-network.json需要额外放到connection-profile文件夹下(需要自行创建)

2.3修改配置文件

  可以先看一下运行的测试网络名sudo docker network ls,我的结果如下图:
在这里插入图片描述
配置config.json,里面的name替换成前面的fabric_test(自行查看)。

{
	"network-configs": {
		"test-network": {
			"name": "fabric_test",
			"profile": "./connection-profile/test-network.json"
		}
	},
	"license": "Apache-2.0"
}

配置docker-compose.yaml,external主要是为了在关闭网络的时候跳过fabric_test。端口可以自行设计,例如设为9090:8080

...
networks:
  mynetwork.com:
    external:
      name: fabric_test
...
		volumes:
		      - ./config.json:/opt/explorer/app/platform/fabric/config.json
		      - ./connection-profile:/opt/explorer/app/platform/fabric/connection-profile
		      - ./organizations:/tmp/crypto
		      - walletstore:/opt/explorer/wallet
		    ports:
		      - 8080:8080
...

配置test-network.json,主要看一下priv_sk名字对不对得上。

"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk"

完整版如下:
config.json

{
	"network-configs": {
		"test-network": {
			"name": "fabric_test",
			"profile": "./connection-profile/test-network.json"
		}
	},
	"license": "Apache-2.0"
}

docker-compose.yaml

# SPDX-License-Identifier: Apache-2.0
version: '2.1'
volumes:
  pgdata:
  walletstore:
 
networks:
  mynetwork.com:
    external:
      name: fabric_test
 
services:
 
  explorerdb.mynetwork.com:
    image: hyperledger/explorer-db:latest
    container_name: explorerdb.mynetwork.com
    hostname: explorerdb.mynetwork.com
    environment:
      - DATABASE_DATABASE=fabricexplorer
      - DATABASE_USERNAME=hppoc
      - DATABASE_PASSWORD=password
    healthcheck:
      test: "pg_isready -h localhost -p 5432 -q -U postgres"
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - mynetwork.com
 
  explorer.mynetwork.com:
    image: hyperledger/explorer:latest
    container_name: explorer.mynetwork.com
    hostname: explorer.mynetwork.com
    environment:
      - DATABASE_HOST=explorerdb.mynetwork.com
      - DATABASE_DATABASE=fabricexplorer
      - DATABASE_USERNAME=hppoc
      - DATABASE_PASSWD=password
      - LOG_LEVEL_APP=info
      - LOG_LEVEL_DB=info
      - LOG_LEVEL_CONSOLE=debug
      - LOG_CONSOLE_STDOUT=true
      - DISCOVERY_AS_LOCALHOST=false
 
    volumes:
      - ./config.json:/opt/explorer/app/platform/fabric/config.json
      - ./connection-profile:/opt/explorer/app/platform/fabric/connection-profile
      - ./organizations:/tmp/crypto
      - walletstore:/opt/explorer/wallet
    ports:
      - 8080:8080
    depends_on:
      explorerdb.mynetwork.com:
        condition: service_healthy
    networks:
      - mynetwork.com

test-network.json

{
	"name": "test-network",
	"version": "1.0.0",
	"client": {
		"tlsEnable": true,
		"adminCredential": {
			"id": "exploreradmin",
			"password": "exploreradminpw"
		},
		"enableAuthentication": true,
		"organization": "Org1MSP",
		"connection": {
			"timeout": {
				"peer": {
					"endorser": "300"
				},
				"orderer": "300"
			}
		}
	},
	"channels": {
		"mychannel": {
			"peers": {
				"peer0.org1.example.com": {}
			}
		}
	},
	"organizations": {
		"Org1MSP": {
			"mspid": "Org1MSP",
			"adminPrivateKey": {
				"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk"
			},
			"peers": ["peer0.org1.example.com"],
			"signedCert": {
				"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem"
			}
		}
	},
	"peers": {
		"peer0.org1.example.com": {
			"tlsCACerts": {
				"path": "/tmp/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"
			},
			"url": "grpcs://peer0.org1.example.com:7051"
		}
	}
}

2.4组织文件复制

将test-network下的organization文件夹复制到explorer文件夹下sudo cp -rf ../organizations/ ../explorer/

3.运行

  输入sudo docker-compose up -d启动网络,结果如图:
在这里插入图片描述
之后在网页输入localhost:8080,账号密码在test-network.json设置,默认为"id": “exploreradmin”,
“password”: “exploreradminpw”。登录之后如下图所示(CHAINCODE之类的是我安装之后的数值,不重要)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/146644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Isaac Sim 机器人仿真器介绍、安装与 Docker [1]

前言与参考 此文书写于: January 6, 2023, 更新于 January 6, 2023 ;可能会随着时间的变化 此教程会有过时概念哦 Isaac Sim 相关参考链接: 官方文档地址官方docker image 镜像地址官方讨论 论坛链接,建议没啥事就可…

【JavaGuide面试总结】Java基础篇·中

【JavaGuide面试总结】Java基础篇中1.重载和重写有什么区别?2.什么是可变长参数?3.为什么浮点数运算的时候会有精度丢失的风险?4.如何解决浮点数运算的精度丢失问题?5.超过 long 整型的数据应该如何表示?6.基本类型和包…

JSP——标准标签库 (JSTL)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

5G NR标准: 第19章 毫米波射频技术

第19章 毫米波射频技术 现有的 2G、3G 和 4G 移动通信 3GPP 规范适用于 6 GHz 以下的频率范围,相应的 RF 要求考虑了与 6 GHz 以下操作相关的技术方面。 NR 也在这些频率范围内运行(标识为频率范围 1),但另外还将定义为在 24.25…

【人工智能原理自学】梯度下降和反向传播:能改

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔笔记来自B站UP主Ele实验室的《小白也能听懂的人工智能原理》。 🔔本文讲解梯度下降和反向传播:能改,一起卷起来叭! 目录一、“挪…

Rollup Decentralization

1. 引言 当前的Rollup为中心化的,这并不是必须的,而是当前的选择。 2. 何为Rollup? Rollup与其它L2或侧链的主要区别在于: L1数据可用性 Rollup:只要L1的数据可用性存在,用户可重构L2状态,然…

SQL LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 SQL LIKE 操作符 LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 SQL LIKE 语法 SELECT column1, column2, ... FROM table_name WHERE column LIKE pattern; 参数说明: column1, column2, ...&…

php://filter伪协议(总结)

文章目录php://filter伪协议总结php://filter伪协议介绍php://filter伪协议使用方法php://filter过滤器分类filter字符串过滤器string.rot13string.toupperstring.tolowerstring.strip_tagsfilter转换过滤器convert.base64-encodeconvert.base64-decodeconvert.quoted-printabl…

【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )

文章目录一、Kotlin 的空安全机制二、变量可空性1、默认变量不可赋空值2、声明可空类型变量一、Kotlin 的空安全机制 Java 中的空指针问题 : 在 Java 语言 编写的程序中 , 出现最多的崩溃就是 NullPointerException 空指针异常 , 该异常是 运行时 才爆出的 , 在 代码编写时 以…

冰冰学习笔记:C++11的新特性

欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正。 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位…

k8s入门教程

文章导读 kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。 kubernetes的本质是一组服务器集群&…

创建自己的docker镜像

dockerfile案例1导入dockerfiel以及java文件导入后第一步docker build -t javaweb:1.0 .docker build -t (名称以及对应的版本)javaweb:1.0 .(空格之后的一个点表示从当前目录开始)导入成功之后运行容器即可docker run --name web…

二十七、linux系统详解

一、Linux基础篇 1. Linux目录结构 ⑴ 基本介绍: linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。 深刻理解linux树状文件目录是非常重要的,这里我给大家说明一下。 记住一…

Markdown生成目录结构的方法

参考文章:https://www.cnblogs.com/abc-x/p/13470575.htmlmarkdown生成目录结构的方法:示例:project│ README.md│ file001.txt │└───folder1│ │ file011.txt│ │ file012.txt│ ││ └───subfolder1│ │ file111.txt│ │ fil…

【Linux多线程编程】5. 线程锁(2)——死锁、读写锁

前言 上篇文章【Linux多线程编程】4. 线程锁(1)——互斥锁 我们介绍了线程同步的其中一种方式——互斥锁,互斥锁也可以理解为独占锁,只要有一个线程拿到该锁,其他的线程想要获取只能阻塞等待。但互斥锁的使用不当也可…

【云原生】Ceph 在 k8s中应用

文章目录一、概述二、Ceph Rook 介绍三、通过Rook在k8s中部署Ceph1)下载部署包2)部署 Rook Operator3)创建 Rook Ceph 集群4)部署Rook Ceph 工具5)部署Ceph Dashboard6)检查6)通过ceph-tool工具…

VirusTotal智能搜索itw查找从github下载的恶意Android样本

1. Introduction ITW是in the wild的缩写,VirusTotal提供了itw这个搜索关键词,可以搜到从某个url(部分url)上下载到的样本。 作者写过的其他VirusTotal智能搜索用法的文章见参考1和2. 2. itw使用 比如为了查找从github下载的恶…

Day852.Thread-Per-Message模式 -Java 性能调优实战

Thread-Per-Message模式 Hi,我是阿昌,今天学习记录的是关于Thread-Per-Message模式的内容。 Thread-Per-Message 模式,简言之就是为每个任务分配一个独立的线程。 并发编程领域的问题总结为三个核心问题: 分工同步互斥 其中&…

client-go源码学习(三):Indexer、SharedInformer

本文基于Kubernetes v1.22.4版本进行源码学习,对应的client-go版本为v0.22.4 3、Informer机制 4)、Indexer Indexer中有Informer维护的指定资源对象的相对于etcd数据的一份本地缓存,可通过该缓存获取资源对象,以减少对Kubernete…

计算Java对象大小(附实际例子分析)

对象大小如何计算 对象大小包括俩部分的内容,对象头和对象内容。(图片源于网络) 对象头 此处假设是64位的JVM 对象地址,占4个字节。对象标记,占8个字节,包括锁标记,hashcode, age 等。数组…