bash
文档介绍的版本已经过时了,因为mvd最新版本需要通过k8s部署、此版本可以通过docker部署、因为仓库中明确指出,这只是一个演示,并不保证任何稳定性。
以下步骤以此代码为基础:
https://github.com/eclipse-edc/MinimumViableDataspace/releases/tag/mvd-legacy
Eclipse DataSpace Connector (EDC)提供了一种开发和管理 数据空间 的实现方式。本指南重点介绍如何使用Eclipse EDC 的 "MinimumViableDataspace" 和 "DataDashboard" 代码库中的工具来设置数据空间。本文将详细介绍准备开发环境和配置**数据空间所需的所有步骤。**********
先决条件
开始之前,请确保您的虚拟机已安装以下组件:
1. Git:用于克隆代码仓库。
2. Docker:用于创建和管理容器。
3. Docker Compose: 用于定义和运行多容器 Docker 应用程序 。
4. Java:
5. Azure CLI:
- 安装:
arduino
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
- 确认:
css
az --version
注意: 如果您已经安装了 Azure CLI,请跳至下一节。更多详情,请参阅以下文档。
6. 操作系统 Linux:
7. Web 浏览器: 用于测试用户界面。
- Internet Explorer;
- 谷歌浏览器;
- Safari;
- 火狐浏览器;
- 歌剧。
8. Microsoft Azure 存储资源管理器:
- 下载和安装:
shell
-> 从微软官方网站下载 Microsoft Azure Storage Explorer。-
> 按照适用于 Windows、macOS 或 Linux 的安装说明进行操作。
-
确认:
安装完成后,打开 Microsoft Azure 存储资源管理器,并验证您是否可以连接到 Azure 并访问其存储资源。
注意 :如果您已安装 Microsoft Azure 存储资源管理器,请跳至下一节。更多详细信息,请参阅Microsoft Azure 存储资源管理器文档。
补充说明:
- Visual Studio Code 扩展:确保已安装必要的扩展(例如 Docker);
- 网络设置: 检查网络是否已正确配置,以允许下载和访问远程存储库;
- Docker 权限:将用户添加到 Docker 组,以避免在使用 Docker 时需要 sudo 命令。
bash
sudo chmod 777 /var/run/docker.sock
之后,您就可以访问 Docker 扩展并管理所有容器了!
测试设备要求:
T为了保证DataSpace原型的功能和性能,我们在特定环境下对其进行了测试。以下是测试环境的详细信息:
虚拟机:
- 操作系统:Ubuntu 20.04.4 LTS
- 内核:5.15.0--112-generic
- CPU:Intel(R) Xeon(R) 通用 KVM 处理器
- 内存:15 GB
- 存储:60 GB 固态硬盘
开发软件:
- Visual Studio Code: 1.90.1(扩展:Docker)
Git:
- 版本: 2.34.1
Docker:
- 版本: 27.0.1
Docker Compose:
- 版本: 2.28.1
Java:
- 版本: 17.0.11
- OpenJDK 运行时环境(版本 17.0.11+9-Ubuntu-122.04.1)
- OpenJDK 64 位服务器虚拟机(版本 17.0.11+9-Ubuntu-122.04.1,混合模式,共享)
Azure CLI:
- 版本: 2.61.0
Microsoft Azure 存储资源管理器:
- 版本: 1.34.0
Internet Explorer:
- 版本:126.0.2592.61
- 用户代理: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ****AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0
此环境用于确保 DataSpace 原型能够流畅高效地运行。上述硬件和软件配置旨在提供一个稳定、高性能的平台。请确保所有列出的版本和配置均准确且为最新版本,以便完全复现测试环境。
步骤
- 克隆必要的存储库
第一步是克隆MinimumViableDataspace 和DataDashboard 存储库 :
bash
git clone https://github.com/eclipse-edc/MinimumViableDataspace
git clone https://github.com/eclipse-edc/DataDashboard
注意: 请检查代码仓库是否已成功克隆,方法如下:
bash
ls -d MinimumViableDataspace
ls -d DataDashboard
2. 配置数据仪表板路径
然后,您需要将MVD_UI_PATH 环境变量设置为 DataDashboard 存储库的路径。您需要将 "/path/to/DataDashboard" 替换为存储库"克隆"到的路径。
bash
pwd # 显示当前路径
ini
export MVD_UI_PATH= "/path/to/DataDashboard"
注意: 请检查环境变量是否已更改:
bash
echo $MVD_UI_PATH # 检查环境变量的值
3. Java 和 Gradle 配置
在执行 Docker 构建之前,必须先配置一些与 Java 和 Gradle 相关的步骤。为此,首先需要导航到 MinimumViableDataspace 目录:
bash
cd MinimumViableDataspace
然后,定义环境变量:
bash
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 #替换为已安装的 Java 版本
export PATH= $JAVA_HOME/bin: $PATH
echo $JAVA_HOME
稍后,运行以下与 Gradle 相关的命令:
ruby
./gradlew build -x test
./gradlew -DuseFsVault= "true" :launchers:connector:shadowJar
./gradlew -DuseFsVault= "true" :launchers:registrationservice:shadowJar
4. 构建并启动 Docker Compose
完成上述步骤后,仍然在 MinimumViableDataspace 目录中,运行 Docker Compose 命令来构建并启动服务 :
css
docker compose --profile ui -f system-tests/docker-compose.yml up --build
注意: 检查容器的执行状态:
docker ps
5. 配置 app.config.json 文件
接下来,修改 app.config.json 文件,使其反映配置 Dataspace 的机器的 IP 地址和端口。以下是需要修改的文件路径:
- ./system-tests/resources/appconfig/company1/app.config.json
- ./system-tests/resources/appconfig/company2/app.config.json
- ./system-tests/resources/appconfig/company3/app.config.json
将端口字段('localhost')更改为您的虚拟机的 IP 地址和端口:
bash
{
"apiKey" : "ApiKeyDefaultValue" ,
"managementApiUrl" : "http://localhost:9191/api/management" , # 在此处将 localhost 替换为 IP 地址
"catalogUrl" : "http:// localhost:9191/api/management" , # 在此处将 localhost 替换为 IP 地址
"storageAccount" : "company1assets" ,
"storageExplorerLinkTemplate" : "storageexplorer://v=1" ,
"theme" : "theme-1"
}
注意: 进行这些更改后,您需要重启 Docker Compose 以应用更新后的 IP 地址和端口设置。为此,请运行以下命令:
docker-compose down
docker-compose up -d
提示: 请记住重新启动system-tests-company1-datadasboard、system-tests-company2-datadasboard和,system-tests-company3-datadasboard以有效应用更改。
6. 运行 CLI 服务
然后您需要进入 cli-tools 容器并运行注册命令:
bash
docker exec -it cli-tools bash
在容器内,依次执行以下 Java 命令:
ini
java -jar registration-service-cli.jar \
-d=did:web:did-server:registration-service \
--http-scheme \
-k=/resources/vault/company1/private-key.pem \
-c=did:web:did-server:company1 \
participants get
如果命令执行成功,您应该会看到类似如下的输出:
json
{
"did" : "did:web:did-server:company1" ,
"status" : "已加入"
}
最后,在命令行中执行"exit"命令,退出容器并返回到初始终端:
bash
exit
7. 创建和加载存储 Blob
完成上述步骤后,您需要在容器外部的 MinimumViableDataspace 目录中定义存储服务的连接字符串:
ini
conn_str = "DefaultEndpointsProtocol=http;AccountName=company1assets;AccountKey=key1;BlobEndpoint=http://127.0.0.1:10000/company1assets;"
接下来,创建一个存储容器并加载一个示例 blob:
css
az storage container create --name src-container --connection-string $conn_str
scss
az storage blob upload -f ./deployment/azure/terraform/modules/participant/sample-data/text-document.txt --container-name src-container --name text-document.txt --connection-string $conn_str
如果上传成功,输出结果将为:
json
{
"created" : true
}
csharp
已完成[ ############################################################# ] 100.0000 %
{
"client_request_id" : "cf61fbf8-33c6-11ef-a1d4-0d3af0ba1eac" ,
"content_md5" : "NYmQguUe32Z/FEd6wADLug==" ,
"date" : "2024-06-26T14:17:25+00:00" ,
"encryption_key_sha256" : null ,
"encryption_scope" : null ,
"etag" : ""0x222E1EDBEB7EB80"" ,
"lastModified" : "2024-06-26T14:17:25+00:00" ,
"request_id" : "a1128c96-366b-4631-bb4e-9ec4ed720d50" ,
"request_server_encrypted" : true ,
"version" : "2024-08-04" ,
"version_id" : null
}
注意: 请检查环境变量是否已更改:
1. 查找凭据 :打开system-tests/docker-compose.yml 文件,找到 azurite 服务的存储帐户凭据。通常,帐户名称为company1assets ,密钥为key1;
2. 访问容器 :在 Azure 存储资源管理器中,转到 "Blob 容器" 部分;
3. 检查容器 :查找名为 "src-container"的容器。 该容器应该是自动创建的;
按回车键或点击查看完整尺寸的图片

图 1 --- 在 Azure 存储资源管理器的"Blob 容器"部分下的"src-container"中可见文档,确认容器创建成功且文档上传成功。
4. 检查内容 :在src 容器内,找到名为 "text-document.txt" 的文本文件。打开此文件并确认其包含以下信息: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
按回车键或点击查看完整尺寸的图片

图 2 --- 检查 'src-container' 中的 'text-document.txt' 是否包含预期消息。
8. 访问服务
最后,访问配置的 IP 地址及其端口所对应的服务。典型的访问地址如下:
- http://127.0.0.1:7080(将"127.0.0.1"替换为机器的 IP 地址或 localhost)
按回车键或点击查看完整尺寸的图片

图 3 --- EDC 数据仪表板公司 1。
按回车键或点击查看完整尺寸的图片

图 4 --- EDC 数据仪表板公司 2。
按回车键或点击查看完整尺寸的图片

图 5 --- EDC 数据仪表板公司 3。
注意: 请检查环境变量是否已更改:
- 通过浏览器或 HTTP 请求工具检查合约和交易所是否配置正确并正常运行。
- 根据您的网络和开发环境的具体配置调整 IP 地址和端口。
9. 总结
以下步骤将启动并完成使用所提供的测试文档进行的文件传输。
- 打开公司 1 的 Web 界面(例如http://localhost:7080),并在"资产"部分检查两个资产 。
按回车键或点击查看完整尺寸的图片

图 6 --- 公司 1 的资产(资产)。
- 打开公司2的界面(例如http://localhost:7081) ,并在目录浏览器 中检查所有参与者的六项现有资产。在目录浏览器中,点击资产" test-document_company1"的 "协商" 按钮。不到一分钟内,应该会显示 "合同协商完成!查看详情!"的消息。****************
按回车键或点击查看完整尺寸的图片

图 7 --- 公司 2 的资产(目录浏览器)。
- 在上一条消息中,点击 "显示给我!" 。如果您丢失了该消息,请手动前往"合同"部分 。此时应该会显示一份新的合同。点击 "转移" 即可开始转移流程。
Press enter or click to view image in full size

图 8 --- 公司 2 的合同。
- 此时会弹出一个对话框。在这里,选择" AzureStorage" 作为目标位置,然后单击 "开始传输" 。
Press enter or click to view image in full size

图 9 --- 合同公司 2 的目的地。
- 您应该会在一分钟内看到 "转账 [id] 完成!查看详情!" 的消息。(其中id为 UUID。)
Press enter or click to view image in full size

图 10 --- 公司 2 的转让历史。
- 要检查传输是否成功,可以使用Microsoft Azure 存储资源管理器来检查 company2 存储帐户。存储帐户的名称和密钥在azurite 服务的system-tests/docker-compose.yml 文件 中定义。默认名称为company2assets ,密钥为key2 。存储帐户中必须存在一个包含 .complete 和text-document.txt两个文件的新容器。********************
Press enter or click to view image in full size

图 11 --- Microsoft Azure 存储资产公司2。
结论
按照这些步骤,您将使用Eclipse EDC 设置一个最小数据空间 。此配置使您能够探索和了解如何管理数据空间,包括创建合约和参与者之间的数据交换。********
提示:
- 检查容器日志以解决可能存在的问题;
- 请确保所有环境变量和设置均正确,以避免连接失败。
更多详情请参阅官方文档。