2017-09-17 21 views
0

도커 컨테이너가 제대로 작동하고 그래픽 SQL 클라이언트를 사용하여 데이터베이스에 연결할 수 있습니다. 내 phpBB의 인스턴스에 연결하려고 할 때phpbb에서 도커 컨테이너의 mysql에 연결할 수 없습니다.

그러나, 나는이 오류가 발생합니다 :

General Error SQL ERROR [ mysqli ]

No such file or directory [2002]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.

의 phpBB 설정은 다음과 같습니다

:
$dbms = 'mysqli'; 
$dbhost = 'localhost'; 
$dbport = ''; 
$dbname = 'xxxxx_xxxx'; 
$dbuser = 'xxxxxxxxx'; 
$dbpasswd = 'xxxxxx'; 

겠습니까 파일이나 디렉토리가 없습니다 mysql.so와 관련이 있습니까? 만약 그렇다면 내가 docker configs에서 이것을 어디에 설정할 것입니까?

그렇다면 아무도 무슨 일이 일어나는지 알지 못합니까? 선명도

편집 : 내 고정 표시기 - compose.yml의 모습을

아래 내가

PHP '까지 고정 표시기-구성'으로 실행하고있는 : 이미지 : webdevops/PHP-의 nginx를 링크 : - DB : 데이터베이스 볼륨 : - "/ 홈/XXX/코드/MYTEST :/MYTEST - 이제" 포트 : - 80:80 환경 : - WEB_DOCUMENT_ROOT =/MYTEST/공공

db: 
    image: mariadb:latest 
    volumes: 
    - "mytest-db:/var/lib/mysql" 
    ports: 
    - "3306:3306" 
    environment: 
    MYSQL_ROOT_PASSWORD: admin 
    MYSQL_DATABASE: dbname 
    MYSQL_USER: user 
    MYSQL_PASSWORD: password 
+0

컨테이너를 어떻게 운영하고 있습니까? 여러 개의 용기가 있습니까? – Sergiu

+0

@Sergiu - 이것은 내 컴퓨터입니다. 따라서 '도커 작성'과 함께 실행합니다. 위의 도커 - compose.yml을 명확하게 게시했습니다. – iKode

답변

1

연결이 작동하지 않는 이유는 localhost입니다. 나는 docker-compose 또는 docker를 통해 mysql 컨테이너를 실행하고 3306 포트 호스트를 컨테이너의 3306 호스트에 매핑했다고 가정합니다.

이제 그래픽 사용자 인터페이스 (GUI) localhost:3306을 사용하면 작동합니다. 이것은 도커 포트를 호스트 포트로 전달했기 때문입니다.

하지만 phpbb 컨테이너 localhost는 컨테이너 자체를 참조하므로 연결을 만들 수 없습니다.그래서 거기에 몇 가지 방법은

호스트 IP

사용하면 포트 3306

$dbhost = '192.168.0.102'; 

를 매핑 한 호스트 IP를 작동하게하는이 아닌 호스트 IP로 권장되는 방법 것입니다 당신이 다른 네트워크

를 사용하여 MySQL의 컨테이너 이름

에 연결할 때 변경 17,451,515,

--name mysqldb와 MySQL의 컨테이너를 실행하고 연결에이 이름을 사용

$dbhost = 'mysqldb'; 

를 사용하여 MySQL의 서비스 이름

당신이 docker-compose을 사용하고 서비스

version: '3' 
services: 
    mysqldb2: 
    image: mysql 
    environment: 
     - MYSQL_ROOT_PASSWORD=root 
    phpbb: 
    ..... 
로 MySQL을 추가 한 경우

연결 설정에서 서비스 이름을 사용할 수 있습니다.

$dbhost = 'mysqldb2'; 
+0

감사합니다! 나는 도커 검사를 실행하고 0.0.0.0의 호스트 IP를 보았습니다. 사용하려고하면 'Connection refused [2002]'라고 표시됩니다. 그렇지 않으면 아직 서비스를 사용하고 있지 않습니다. 이것은 내 컴퓨터이고, 도커에서의 첫 번째 시도입니다. 서비스가 필요합니까? 위의 도커 - composer.yml을 게시했습니다. 간단한 방법이 있기를 바랍니다 ... 도와 주셔서 감사합니다 !! – iKode

0

'docker inspect containername'을 실행 한 후 NetworkSettings.Networks.bridge.gateway 아래에서 IP 주소를 발견했습니다.

나는 그것을 시도했을 때 효과가있었습니다.