繁体   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