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

313
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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