簡體   English   中英

Hyperledger Composer無法與dockerized Node.js應用程序連接

[英]Hyperledger Composer cannot connect with dockerized Node.js app

我正在使用Hyperledger Composer v0.16.0和Node.js SDK在POC中工作。 我已按照此開發人員教程部署了我的Hyperledger Fabric實例,當我通過node server.js命令在本地運行我的Node.js應用程序時,它可以正常工作,我可以檢索參與者,資產等。

但是,當我Dockerize我的Node.js應用程序並運行此應用程序的容器時,我無法訪問Hyperledger Fabric實例。 那么,從我的Node.js應用程序開始,如何設置憑據以便能夠訪問我的Hyperledger Fabric或另一個?

我的Dockerfile看起來像這樣:

FROM node:8.9.1
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]

我用這個命令運行我的docker / node.js鏡像:

docker run --network composer_default -p 3000:3000 -d myuser/node-web-app

Docker化您的應用程序需要注意兩個陷阱。 1.卡的位置和2. Fabric服務器的網絡地址。

  1. 您的應用用於連接到Fabric的業務網卡。 這些卡位於默認主文件夾下的隱藏文件夾中,例如Linux機器上的/home/thatcher/.composer 您需要將這些“傳遞”到容器中,或者按照上一個答案的建議與共享卷共享它們。 因此,首次運行容器嘗試在命令-v ~/.composer:/home/<user>/.composer添加它,其中是容器中默認用戶的名稱。 還要注意Docker主機上的文件夾必須允許對容器內用戶的UID進行寫訪問。

  2. 當您整理出卡片共享時,您需要考慮卡片中的連接信息。 您正在使用的業務網卡很可能使用localhost作為Fabric服務器的地址,從Docker主機到容器的端口轉發意味着localhost很容易且有效。 但是在您的容器中,localhost將在容器內重定向,因此不會看到Fabric。 Docker命令--network composer_default上的參數將在與Fabric Containers相同的Docker網絡上設置您的新容器,因此您的Container可以看到Fabric服務器的“地址”,例如orderer.example.com但是您的卡將會在容器外面失敗。 最好的方法是將Docker主機的IP地址編號放入connection.json文件而不是localhost,然后您的卡可以在容器內外工作。

因此,憑據將是配置信息。 將配置信息傳遞到基本docker容器的兩種方法是:

  1. 環境變量(-e)
  2. 使用配置信息裝入卷(-v)。

您還可以使用從Dockerfile安裝的腳本來修改文件等。

docker日志可以提供有關確切問題或問題集的線索。

docker logs mynode

您還可以輸入正在運行的容器並使用該命令窺探

docker exec -it mynode bash

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM