2017-12-12 15 views
0

docker와 함께 nginx, php, mysql을 실행하려고합니다.Mysqli 오류 2002 : 해당 파일 또는 디렉터리가 없습니다.

docker-compose를 실행하면 모든 것이 정상적으로 보이지만 인덱스 페이지에서 PHP 코드를 통해 mysql에 연결하려고하면이 오류가 발생합니다.

Warning: mysqli::__construct(): (HY000/2002): No such file or directory in /code/index.php on line 8 
Connection failed: No such file or directory 
  • 내가와 127.0.0.1 할 localhost를 모두 변경 시도 : 그 후 3306.

때 변경 로컬 호스트 -> 127.0.0.1, 나는 다른 연결에 실패 문 받고 있어요 :

Warning: mysqli::__construct(): (HY000/2002): Connection refused in /code/index.php on line 8 
Connection failed: Connection refused 

PHP 코드 : 또한

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = "toor"; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "Connected successfully"; 

echo phpinfo(); 

?> 

내 모습 phpinfo();에있는 값은 mysqli.default_socket입니다.

docker-compose를 시작한 후에 mysql 이미지로 갈 때, 나는 mysql 쉘로 들어가서 명령을 잘 실행할 수있다.

도움을 주시면 감사하겠습니다.

답변

0

내 대답을 읽어보십시오. from this other question. 로컬 호스트는 컨테이너 내부에 있어야한다고 생각하는 것처럼 해결되지 않습니다.

docker-compose.yml을 사용할 때 docker-compose.yml에 지정된 서비스 이름으로 다른 서비스를 참조 할 수 있습니다. 호스트 이름은 localhost가 아니고 web, php 및 mysql입니다. 따라서 PHP 코드에서 $servername = "localhost"; 대신 $servername = "mysql";을 사용해야합니다.

+0

와우 저는 이틀 동안 고마워했습니다. 감사합니다 !! – Thibaut