Search code examples
node.jsdockerrequest

ECONNREFUSED nodeJS with express inside docker container


I'm building up a nodejs app which is running in the docker container...

This is the command I used to run the container...

sudo docker run -it --rm -p 3000:6001 --name xxx-running xxx

Execute above command line, got following output..

    Running on Locally
    AppEnv {
      isLocal: true,
      app: {},
      services: {},
      name: 'xxx',
      port: 6001,
      bind: '0.0.0.0',
      urls: [ 'http://localhost:6001' ],
      url: 'http://localhost:6001' }
   App started on port http://localhost:6001

Since the app will call third party api, so the request module is required. Each time when a request is invoked, I got following error...

{ [Error: connect ECONNREFUSED 192.155.253.83:443]
 code: 'ECONNREFUSED',
 errno: 'ECONNREFUSED',
 syscall: 'connect',
 address: '192.155.253.83',
 port: 443 }

I know maybe it's because of the localhost entry, but how can I change this?


Solution

  • Are you hosting your third-party API inside a docker container on localhost? If yes, then you need to make sure that third-party API docker container is sharing same network. See https://docs.docker.com/engine/userguide/networking/. I had same problem trying to access a rest endpoint which I assumed would be resolved with localhost since it is running inside my Docker container. Here is a sequence of steps which helped me resolved issue:

    1. Execute docker network ls to see how many bridge drivers you have. In my case I had 2 and the containers were using different ones.
    2. If you have multiple bridge drivers, make sure that you're starting your containers which will be talking with each other using same bridge network docker run -d -t --network networkname --name containername
    3. Run docker network inspect networkname. You will see details of the network with list of containers. Each container will have an IPv4 address associated with it. Use value of these address to communicate instead of localhost or 127.0.0.1.