如何将Docker容器中的Node.js连接到Hyperledger结构?

如何将Docker容器中的Node.js连接到Hyperledger结构?,docker,hyperledger-fabric,hyperledger,hyperledger-composer,Docker,Hyperledger Fabric,Hyperledger,Hyperledger Composer,Dockerfile FROM node:carbon WORKDIR /usr/src/app COPY package*.json ./ COPY *.card ./ RUN npm install RUN ./node_modules/.bin/composer card import --file admin@biznetwork.card --card admin@biznetwork COPY . . EXPOSE 8080 CMD [ "npm", "start" ] conne

Dockerfile

FROM node:carbon
WORKDIR /usr/src/app
COPY package*.json ./
COPY *.card ./
RUN npm install
RUN ./node_modules/.bin/composer card import --file admin@biznetwork.card --card admin@biznetwork
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]
connection.js用于创建admin@biznetwork.card (我将“://localhost:port”替换为正在运行的容器名称)

Node.js应用程序无法连接,出现错误:

(node:17) UnhandledPromiseRejectionWarning: Error: Error trying to ping. Error: 2 UNKNOWN: error executing chaincode: transaction returned with failure: Error: The current identity, with the name 'admin' and the identifier 'fcb2071b5df74a16b4b93b14bff69af15c1104df6465a23ae4ec3473cc663d71', has not been registered
我觉得我可能把卡弄错了,因为

RUN ./node_modules/.bin/composer card import --file admin@biznetwork.card --card admin@biznetwork
RUN ./node_modules/.bin/composer network ping --card admin@biznetwork

未连接。

我认为您需要将Docker主机的
~/.composer/cards
映射到容器的
~/.composer/cards

是否执行
/node\u modules/.bin/composer-card导入--文件admin@biznetwork.card--卡片admin@biznetwork
在本地系统(Docker主机)上工作?是的。该导入成功,但失败后将执行ping。我不确定通常在
~/.composer/cards
中获取卡片的正确方法,以便在容器内运行的Node.js应用程序可以找到它们。我认为我的问题在于
连接。json
我不确定要指向同一容器中的Hyperledger结构容器,应该将
localhost
更改为什么docker网络。如果您使用的是用户定义的网络,您可以尝试容器本身的名称(我不知道这是否适用于默认网络,如果我错了,请更正我)。
~/.composer/cards
是docker主机上的目录吗?如果是,则可以使用卷(-v)将
~/.composer/cards
(位于Docker主机上)映射到
~/.composer/cards
(可在Docker容器中创建)。
RUN ./node_modules/.bin/composer card import --file admin@biznetwork.card --card admin@biznetwork
RUN ./node_modules/.bin/composer network ping --card admin@biznetwork