2017-02-16 10 views
1

Попытка узнать Docker, у меня возникли проблемы с получением двух контейнеров, чтобы увидеть друг друга. При использовании файлов в формате docker-compose версии 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 файла. Единственная разница между ними заключается в удалении номера версии и группировки «услуги».

Версия 1 докер-Compose файл, который делает работу

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 

Version 2 Докер-Compose, что не работает

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 

Я на самом деле не пытается запустить WordPress с этими настройками, просто пытаясь понять, почему файл, создающий файл докеры, не работает, когда работает тот же файл, отформатированный как файл версии 1. Я попробовал много других приложений, которые подключаются к базе данных, и я не могу заставить их работать.

среда Я использую:

$ 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] (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 

Web can ping mysql просто отлично. Теперь давайте попробуем контейнер 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

Есть ли у вас такие же версии докеров и докеров? Виртуальная машина, которую я использую для этого теста, была развернута с единственной целью играть с Docker и больше ничего не установила. Не уверен, что еще может помешать этому работать. Спасибо, что подтвердили, что, по крайней мере, это не проблема сокета/файла/формата. – justinvoelker

+0

Я немного старше вас. Docker version 1.12.6, build 78d18021ec, docker-compose version 1.6.2, build 4d72027 – user2105103

+0

ну, один старше, один новее. – user2105103