3
respostas

falha conexão ao banco

PDOException Object ( [message:protected] => SQLSTATE[HY000] [2002] No route to host [string:Exception:private] => [code:protected] => 2002 [file:protected] => /var/www/html/funcoes.php [line:protected] => 7 [trace:Exception:private] => Array ( [0] => Array ( [file] => /var/www/html/funcoes.php [line] => 7 [function] => __construct [class] => PDO [type] => -> [args] => Array ( [0] => mysql:host=192.168.0.7;dbname=empresa [1] => root [2] => q1w2e3r4 ) ) [1] => Array ( [file] => /var/www/html/index.php [line] => 6 [args] => Array ( [0] => /var/www/html/funcoes.php ) [function] => include ) ) [previous:Exception:private] => [errorInfo] => ) 

insira seu código aqui

Já alterei o host para o ip da minha máquina, mas continua dando erro

3 respostas

Olá Gabriel, tudo bem? Precisamos verificar o IP do container do MySQL, é para podermos adicionar no arquivo bancodedados.php que fica dentro da pasta "sistema" do projeto, para isso primeiro execute o comando:

docker ps

Para listar todos os containers em execução, logo em seguida execute esse outro comando:

docker inspect <id-do-container-do-mysql>

Informando no lugar do atributo "id-do-container-do-mysql" o número (ID) de identificação do container do MySQL que foi exibido pelo comando docker ps. Feito isso, você verá a seção "NetworkSettings" e dentro dela tem a seção "Networks", você verá a configuração "IPAddress" semelhante a essa:

"IPAddress": "172.18.0.2"

E esse é o IP do container do MySQL que você devemos colocar na variável $host no arquivo bancodedados.php.

Caso não funcione, tente com o IP padrão do docker que é "172.17.0.1".

E fala pra gente se funcionou!

<?php

$host = "172.18.0.2";
$usuario = "root";
$senha = "q1w2e3r4";
$banco = "empresa";

?>
"Gateway": "172.18.0.1", "IPAddress": "172.18.0.2", "IPPrefixLen": 16, "IPv6Gateway": "",

Boa tarde Jonilson,

Fiz todos os procedimentos acima, mas não obtive êxito. Quando coloco IPAdress do conteiner (172.18.0.2) a página demora mais para carregar, mas ainda da o mesmo erro. Tentei usar o ip padrão do docker, ip local da minha máquina, mas deu o mesmo resultado.

Gabriel, realmente é muito estranho, todos esses endereços não terem funcionado! Porém você poderia falar qual é o seu sistema operacional, você está utilizando o Windows é isso? Se sim, vocês está usando o Docker ToolBox ou o Docker for Windows? É importante essas informações porque isso pode influenciar.

De ante mão, podemos tentar uma outra alternativa, você deve remover todos os container, e modificar o arquivo docker-compose.yml (da raiz do projeto), e colocar a linhas:

links:
  - db

Logo após a linha - ./sistema:/var/www/html, ficando o arquivo completo assim:

version: '3.7'
services:
  noticias_web:
    container_name: container-kube-noticias
    image: jnlucas/image-phpmysql:latest
    volumes:
      - ./noticias:/var/www/html

    working_dir: /var/www/html/
    ports:
      - "8588:80"

  sistema_web:
    container_name: container-kube
    image: jnlucas/image-phpmysql:latest
    volumes:
      - ./sistema:/var/www/html
    links:
      - db

    working_dir: /var/www/html/
    ports:
      - "8587:80"

E deixar o arquivo bancodedados.php da seguinte forma:

<?php

$host = "db";
$usuario = "root";
$senha = "q1w2e3r4";
$banco = "empresa";

?>

E depois tentar executar todos os container novamente.

E fala pra gente o resultado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software