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

843
Vistas
Laravel Docker Container no se conecta a mysql local

Tengo un problema al conectarme a mysql ejecutándose en la máquina local en mi DockerFile que he mencionado

 FROM php:7 RUN apt-get update -y && apt-get install -y openssl zip unzip git RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN docker-php-ext-install pdo mbstring pdo_mysql WORKDIR /home COPY . /home RUN composer install --ignore-platform-reqs CMD php artisan serve --host=0.0.0.0 --port=8081 EXPOSE 8081

y esto en mi configuración .env

 DB_HOST=localhost DB_DATABASE=databasename DB_USERNAME=root DB_PASSWORD=testpassword

Tengo muy menos idea de dónde está fallando. ¿Necesito instalar mysql para el contenedor Docker también?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Una solución mucho más simple ( para Mac OSX y Docker para Windows ) es reemplazar la dirección del host de localhost a host.docker.internal

 DB_HOST=host.docker.internal DB_DATABASE=databasename DB_USERNAME=root DB_PASSWORD=testpassword

Básicamente, el nombre DNS host.docker.internal se resolverá en la dirección IP interna utilizada por el host.

NB : si ha cambiado su dirección a host.docker.internal pero aún recibe un error de connection refused , lo más probable es que MySQL esté configurado actualmente para escuchar solo la red local.

Para resolver eso, actualice el valor de bind_address a 0.0.0.0 en su archivo de configuración my.cnf .

over 4 years ago · Santiago Trujillo Denunciar

0

está intentando conectarse a mysql en localhost , que es (sorprendentemente) la referencia al host local. dado que es una dirección relativa, dentro del contenedor se está resolviendo como la propia dirección del contenedor, y no hay mysql esperándote allí... así que para resolverlo, solo dale tu IP de host real en lugar de localhost o 127.0.0.1 .

paso 1 - arreglar el archivo .env:

 DB_HOST=<your_host_ip> #run `ifconfig` and look for your ip on `docker0` network DB_DATABASE=databasename DB_USERNAME=laravel_server #not root, since we are going to allow this user remote access. DB_PASSWORD=testpassword

paso 2 - crear un usuario dedicado:

abra su mysql: mysql -u root -p , proporcione su contraseña de root y ejecute lo siguiente:

 CREATE USER 'laravel_server'@'%' IDENTIFIED BY 'testpassword'; GRANT ALL PRIVILEGES ON databasename.* TO 'laravel_server'@'%'; FLUSH PRIVILEGES;

creamos el usuario y le dimos los permisos.

paso 3 - abra mysql para acceso remoto:

tenemos que hacer que escuche en todas las interfaces y no solo en localhost y, por lo tanto, ejecutamos:

sudo sed 's/.*bind-address.*/bind-address=0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf

(Se le pedirá la contraseña. Este comando solo reemplaza la línea en el archivo de configuración de mysql)

paso 4 - actualización:

  1. en el directorio del proyecto: php artisan config:cache
  2. service mysql restart

luego docker construye y ejecuta un nuevo contenedor nuevamente. debería funcionar para ti.

over 4 years ago · Santiago Trujillo Denunciar

0

Veo dos opciones -

  1. Use la IP privada de su host docker, es decir, donde se ejecuta el servidor mysql.

  2. Use el modo de red de host mientras ejecuta el contenedor en caso de que quiera usar localhost.

    docker container --net=host ...

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