我正在使用Hyperledger Composer v0.16.0和Node.js SDK在POC中工作。我在此developer tutorial之后部署了我的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
答案 0 :(得分:3)
使用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,然后你的卡就能在容器内外工作。
答案 1 :(得分:0)
因此,凭据将是配置信息。将配置信息传递到基本docker容器的两种方法是:
您还可以使用从Dockerfile安装的脚本来修改文件等。
docker日志可能会提供有关确切问题或问题集的线索。
docker logs mynode
您还可以使用命令
输入正在运行的容器并进行窥探docker exec -it mynode bash