Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.3K
Vistas
TCPConnectWrap.afterConnect: el nodo no puede obtener datos de mysql cuando está en Docker Compose

Estoy tratando de conectar el nodo con mysql a través de dokcer-compose. Puedo acceder a mysql con el banco de trabajo, pero cuando intento conectarme con el nodo, aparece el error:

 Error: connect ECONNREFUSED 127.0.0.1:3306    at TCPConnectWrap.afterConnect [as oncomplete] (net.js: 1054: 14))

¿Alguien sabe qué está pasando?

docker-compose.yml

 version: '3' services: #App Service app: image: "node:alpine" container_name: cms-node restart: unless-stopped tty: true working_dir: /app environment: - NODE_ENV=production ports: - 1234:1234 volumes: - ./:/app links: - db depends_on: - db #Mysql Service db: image: mysql:latest container_name: cms-mysql restart: unless-stopped # command: --default-authentication-plugin=mysql_native_password environment: MYSQL_DATABASE: CMS MYSQL_USER: root MYSQL_PASSWORD: root MYSQL_ROOT_PASSWORD: root ports: - 3306:3306

nodo crear conexión

 const db: Connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'root', database: 'CMS', }); export default db;

nodo intenta conectarse

 db.connect((err) => { if (err) { throw err; } console.log('Connected!'); });
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Debe utilizar el nombre del enlace (de forma predeterminada, el nombre del servicio vinculado) como nombre de host al que conectarse. Consulte la documentación de docker-compose.yml para obtener más información.

Así que solo use host: 'db' en lugar de host: 'localhost'

over 4 years ago · Santiago Trujillo Denunciar

0

Sí, tenemos que usar el nombre del servicio de docker-compose.yml . Me enfrenté a un problema similar cuando había un servidor API Gateway personalizado ( que funcionaba como proxy ) escrito en node.js que se conectaba a otros dos servicios. Entonces, reemplazar localhost:3001 con serviceName:30001 solucionó el problema.

Código de ejemplo:

 ... const proxy = require('express-http-proxy'); ... app.use('/json-parser', proxy('json_parsing_api:3001')); app.get('/json-parser/json-to-person', proxy('json-to-person'));
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda