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

312
Views
Conexión MYSQLI rechazada al conectarse a otro contenedor docker que ejecuta MariaDB

Estoy empezando a ensuciarme las manos con Docker y estoy tratando de hacer que mi aplicación PHP se ejecute en un contenedor docker con nginx para conectarme a la base de datos que se ejecuta en otro contenedor que ejecuta MariaDB.

Cuando ejecuto los contenedores, puedo conectarme sin problemas a la base de datos desde mi computadora (usando Sequel Pro), pero cuando intento conectarme a la base de datos desde la aplicación PHP que se ejecuta en el contenedor nginx, aparece el siguiente error de mysqli:

Advertencia: mysqli_connect(): (HY000/2002): Conexión rechazada en >/app/web/php/db-config.php en la línea 7 No se pudo conectar a la base de datos, murió con error:

El db-config.php donde ocurre el error es el siguiente:

 define('DB_HOST', '0.0.0.0:3306'); define('DB_NAME', 'Jumpooling'); define('DB_USER', 'root'); define('DB_PASSWORD', 'root'); $con=mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Failed to connect to the database, died with error:');

Todo el contenido del archivo docker-compose.yml está en este repositorio.

¿Qué me estoy perdiendo?

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Logré encontrar la solución en esta respuesta.

El problema era que el host no debía definirse como una dirección IP sino con el nombre de enlace que se le da en el archivo docker-compose.yml , es decir, db .

El db-config.php final es, por lo tanto:

 define('DB_HOST', 'db'); define('DB_NAME', 'Jumpooling'); define('DB_USER', 'root'); define('DB_PASSWORD', 'root'); $con=mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, 3306) or die('Failed to connect to the database, died with error:');
about 4 years ago · Santiago Trujillo Report

0

No se requieren enlaces para permitir que los servicios se comuniquen; de forma predeterminada, cualquier servicio puede llegar a cualquier otro servicio en el nombre de ese servicio.

Se podrá acceder a los contenedores para el servicio vinculado en un nombre de host idéntico al alias, o al nombre del servicio si no se especificó ningún alias.

about 4 years ago · Santiago Trujillo Report

0

Debe especificar el contenedor/navegador de puertos explícitamente como -p 3306:3306:

 docker run --name mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest
about 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!