2017-02-16 3 views
1

Docker를 배우려고하면 두 컨테이너를 서로 보지 못하는 데 문제가 있습니다. docker- 형식 2 파일을 사용할 때 프런트 엔드에서 데이터베이스에 연결하는 동안 오류가 발생합니다. 나는 바보 같은 접근 방법이라고 생각했던 것을 시도했다. using the WordPress example straight from the Docker website. 이 정확한 예를 사용하면 데이터베이스가 wordpress 컨테이너에서 찾을 수 없습니다. 다음과 같은 오류가 표시됩니다.Docker가 서로를 찾지 못하는 v2 컨테이너를 구성합니다 (v1이 있더라도)

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 22 
Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 22 
MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known 

간단한 예제로 작업 버전 1 파일과 작동하지 않는 버전 2 파일을 표시했습니다. 이 둘의 유일한 차이점은 버전 번호와 "서비스"그룹의 제거입니다. 실제로 이러한 설정으로 워드 프레스를 실행하려고하고 있지 않다

version: '2' 
services: 
    web: 
    image: wordpress 
    links: 
     - mysql 
    environment: 
     - WORDPRESS_DB_PASSWORD=password 
    ports: 
     - "8080:80" 
    mysql: 
    image: mysql:5.7 
    environment: 
     - MYSQL_ROOT_PASSWORD=password 
     - MYSQL_DATABASE=wordpress 

작동하지 않습니다

web: 
    image: wordpress 
    links: 
    - mysql 
    environment: 
    - WORDPRESS_DB_PASSWORD=password 
    ports: 
    - "8080:80" 
mysql: 
    image: mysql:5.7 
    environment: 
    - MYSQL_ROOT_PASSWORD=password 
    - MYSQL_DATABASE=wordpress 

버전 2 고정 표시기-작성 작업 않습니다

버전 1 고정 표시기-작성 파일, 단지 버전 1 파일로 포맷 된 동일한 파일이 작동 할 때 왜 도커가 버전 2 파일을 작성하지 않는지 알아 내려고합니다. 나는 데이터베이스에 연결하는 다른 많은 예제 애플리케이션을 시도해 보았고 아무 것도 작동하지 못하게 할 수있다. 내가 사용하고

환경 :

$ uname -a 
Linux vir-docker 4.4.0-62-generiC#83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 
$ docker -v 
Docker version 1.13.1, build 092cba3 
$ docker-compose -v 
docker-compose version 1.11.1, build 7c5d5e4 
+0

아마도 버전 2의 보안 및/또는 네트워킹이 향상되었을 것입니다. MySQL 호스트 및 포트를 서비스 mysql의 이름으로 설정해야합니다. – rocksteady

+0

[docker website] (https://docs.docker.com/compose/wordpress/)의 예제는 MySQL 호스트와 포트가 설정되어 있어도 작동하지 않습니다. – justinvoelker

+0

버전 : '3'은 나를 위해 작동하지만 ... 2가 아닙니다. – user672009

답변

1

이것은 설정의 문제가 될 수 있어야합니다. 정확한 버전 2 파일을 실행했습니다 (게시 된 포트만 변경됨). 다음을 통해 회전시킵니다.

docker-compose up 

다른 쉘로 전환하여 웹 컨테이너에 입력했습니다.

docker exec -it web_1 /bin/bash 

[email protected]:/var/www/html# ping mysql 
PING mysql (172.18.0.2): 56 data bytes 
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.080 ms 
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.082 ms 

웹에서 mysql을 정상적으로 ping 할 수 있습니다. 이제 mysql 컨테이너를 사용해 보자 :

docker exec -it mysql_1 /bin/bash 

[email protected]:/# ping web 
PING web (172.18.0.3): 56 data bytes 
64 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.081 ms 
64 bytes from 172.18.0.3: icmp_seq=1 ttl=64 time=0.083 ms 

웹 컨테이너를 핑 (ping) 할 수있다.

+0

같은 버전의 도커와 도커를 만들었나요? 이 테스트를 위해 사용하고있는 VM은 Docker를 가지고 노는 유일한 목적으로 회전되었고 다른 것은 설치되지 않았습니다. 이 작업을 방해 할 수있는 것이 무엇인지 확신 할 수 없습니다. 최소한 도커 작성/파일/형식 문제가 아닌지 확인해 주셔서 감사합니다. – justinvoelker

+0

나는 너보다 조금 나이가 많다. Docker 버전 1.12.6, 빌드 78d18021ec, 도커 - 작성 버전 1.6.2, 빌드 4d72027 – user2105103

+0

잘, 오래된 하나, 새로운 하나. – user2105103

관련 문제