HyperLeDger Composer无法与Dockerized Node.js App连接



我正在使用HyperLeDger Composer V0.16.0和Node.js SDK在POC中工作。我已经在此开发人员教程之后部署了我的HyperLeDger Fabric实例,当我通过node server.js命令在本地运行我的Node.js应用程序时,它可以正常工作,我可以检索参与者,资产等。

但是,当我将node.js应用程序扩展到该应用程序的容器时,我将无法达到HyperLeDger Fabric实例。那么,我如何将凭据设置为能够到达我的HyperLeDger面料或另一个,因为我的node.js应用程序?

我的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

有2个陷阱,请注意您的应用程序。1.卡的位置和2.面料服务器的网络地址。

  1. 您的应用程序使用的商务网卡连接到面料。这些卡在您默认的主文件夹下的隐藏文件夹中,例如Linux计算机上的/home/thatcher/.composer。您需要将它们"传递"到容器中,或与上一个答案所建议的共享卷共享。因此,第一次运行容器尝试在命令-v ~/.composer:/home/<user>/.composer中添加此容器,在您的容器中默认用户的名称是什么。还请注意,Docker主机机器上的文件夹必须允许在容器内写入用户的UID。

  2. 当您整理出卡的共享时,您需要考虑卡中的连接信息。您使用的商务网卡很可能会使用Localhost作为面料服务器的地址,端口将端口从Docker主机转发到容器中,这意味着Localhost很容易且有效。但是,在您的容器中,Localhost将重定向容器内部,因此不会看到织物。Docker命令--network composer_default上的参数将在与面料容器的同一Docker网络上设置您的新容器,因此您的容器可以看到织物服务器的"地址",例如orderer.example.com,但您的卡将在容器之外失败。最好的前进方法是将Docker主机机器的IP地址编号放入连接。JSON文件而不是本地主机,然后您的卡将在容器内部和外部工作。

因此,凭据是配置信息。将配置信息传递到基本码头容器的两种方法是:

  1. 环境变量(-e)
  2. 使用配置信息安装卷(-v)。

您还可以从Dockerfile安装的脚本修改文件等。

Docker日志可能会提供有关确切问题或一组问题的线索。

docker logs mynode

您还可以进入运行的容器,然后使用命令

偷偷摸摸
docker exec -it mynode bash

最新更新