![](/img/trans.png)
[英]Hyperledger-Composer: Why use Node.js instead of Angular?
[英]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服务器的网络地址。
您的应用用于连接到Fabric的业务网卡。 这些卡位于默认主文件夹下的隐藏文件夹中,例如Linux机器上的/home/thatcher/.composer
。 您需要将这些“传递”到容器中,或者按照上一个答案的建议与共享卷共享它们。 因此,首次运行容器尝试在命令-v ~/.composer:/home/<user>/.composer
添加它,其中是容器中默认用户的名称。 还要注意Docker主机上的文件夹必须允许对容器内用户的UID进行写访问。
当您整理出卡片共享时,您需要考虑卡片中的连接信息。 您正在使用的业务网卡很可能使用localhost作为Fabric服务器的地址,从Docker主机到容器的端口转发意味着localhost很容易且有效。 但是在您的容器中,localhost将在容器内重定向,因此不会看到Fabric。 Docker命令--network composer_default
上的参数将在与Fabric Containers相同的Docker网络上设置您的新容器,因此您的Container可以看到Fabric服务器的“地址”,例如orderer.example.com
但是您的卡将会在容器外面失败。 最好的方法是将Docker主机的IP地址编号放入connection.json文件而不是localhost,然后您的卡可以在容器内外工作。
因此,凭据将是配置信息。 将配置信息传递到基本docker容器的两种方法是:
您还可以使用从Dockerfile安装的脚本来修改文件等。
docker日志可以提供有关确切问题或问题集的线索。
docker logs mynode
您还可以输入正在运行的容器并使用该命令窥探
docker exec -it mynode bash
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.