Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.3K
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!