Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

842
Visualizações
Laravel Docker Container not connecting to local mysql

I have an issue connecting to mysql running in the local machine in my DockerFile i have mentioned

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

and this in my .env configuration

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

I have very less clue about where it is failing. Do i need to install mysql for Docker container also?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

A much simpler solution (for Mac OSX & Docker for Windows) is to replace the host address from localhost to host.docker.internal

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

Basically the DNS namehost.docker.internal will resolves to the internal IP address used by the host.

NB: If you have changed your address to host.docker.internal but you still receive connection refused error, it’s most probably because MySQL is currently configured to only listen to the local network.

To resolve that, please update the value of the bind_address to 0.0.0.0 in your my.cnf configuration file.

over 4 years ago · Santiago Trujillo Relatório

0

you are trying to connect to mysql in localhost, which is (surprisingly) the reference to the local host. since its a relative address, inside the container it is being resolved as the container own address, and no mysql is awaiting you there... so to solve it - just give it your real host ip instead of localhost or 127.0.0.1.

step 1 - fix .env file:

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

step 2 - create dedicated user:

open your mysql: mysql -u root -p, give your root password, and run the following:

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

we created the user and gave it the permissions.

step 3 - open mysql to remote access:

we have to make it listening on all interfaces and not just localhost and therefore we run:

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

(you will be prompted for password. this command is just replacing the line in mysql configuration file)

step 4 - updating:

  1. in the project directory: php artisan config:cache
  2. service mysql restart

then docker build and run a new container again. it should work for you.

over 4 years ago · Santiago Trujillo Relatório

0

I see two options -

  1. Use the private IP of your docker host i.e where mysql server is running.

  2. Use the host network mode while running container in case you want to use localhost.

    docker container --net=host ...

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda