I have tried to use docker toolbox to setup Hyperledger V1.0 in my local machines. I according to this document: http://hyperledger-fabric.readthedocs.io/en/latest/asset_setup.
I was having the same issue while following the latest "Writing Your First Application" tutorial (http://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html). I had installed all the pre-requisites and the fabric-samples
and started the local network.
When I got to the step of enrolling the Admin user, $ node enrollAdmin.js
, I was getting the same error message as above, Error: connect ECONNREFUSED
, followed by the localhost domain.
As the first answer suggests, the root cause is that I'm running Docker Toolbox. I'm developing on an older Mac, OSX v10.9.5, so I couldn't use Docker for Mac.
To fix the issue, I replaced 'localhost'
in the enrollAdmin.js code with the IP from Docker Toolbox.
Here are the steps I took:
docker is configured to use the default machine with IP
...enrollAdmin.js
from fabric-samples/fabcar
directoryFound this code:
// be sure to change the http to https when the CA is running TLS enabled
fabric_ca_client = new Fabric_CA_Client('http://localhost:7054', tlsOptions , 'ca.example.com', crypto_suite); // <-- This is the line to change
:7054
as is.$ node enrollAdmin.js
The script connected to the CA and successfully completed the Admin enrollment.
On to the next step!
There were several problems, not the least of which that documentation was outdated and was for a preview release of Hyperledger Fabric. The docs are actually in the process of being removed as we need to update our examples / samples.
You mentioned Docker Toolbox - so are you trying to run all of this on Windows or Mac?
UPDATE:
So one of the issue with Docker Toolbox or Docker for Windows is that you cannot use localhost / 127.0.0.1 as the address when trying to communicate from apps on the host (even in the QuickStart Terminal) to the endpoints of the Docker containers. When the QuickStart Terminal first launches Docker, you'll see that it will output the IP address of the endpoint you should use when communicating with exposed ports.