Intento conectarme desde un backend de node.js a un servidor diferente que se ejecuta en localhost. Cada servidor se ejecuta en un contenedor docker. Cuando ejecuto la solicitud http, recibo 'Error: conectar ECONNREFUSED 127.0.0.1:80' o 'Error: conectar ECONNREFUSED Error: conectar ECONNREFUSED 127.0.0.1:4200' cuando se conecta a cualquier cosa en localhost. Mi código se ve de la siguiente manera:
const http = require('http'); const xy = http.get('http://localhost/path', (r) =>{ console.log(r); }); xy.on('error', e => { console.log(e); }); const xz = http.get('http://localhost:4200', (r) =>{ console.log(r); }); xz.on('error', e => { console.log(e); });No entiendo, por qué no funciona. La misma solicitud en el navegador funciona. La conexión a diferentes URL como google.com también funciona. Aquí está la salida de netstat -na:
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:4222 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:4200 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN¿Alguien tiene alguna idea?
Saludos
localhost dentro de un contenedor se refiere al contenedor en sí, no a su computadora portátil/servidor. Entonces, el otro servicio no se está ejecutando allí.
Si desea conectarse desde un contenedor a otro contenedor, debe usar el nombre del contenedor en lugar de localhost.
Además, los contenedores deben estar dentro de la misma red.