Docker - PHP / MySQL - php_network_getaddresses: сбой getaddrinfo: имя или служба неизвестны - PullRequest
1 голос
/ 07 октября 2019

У меня есть следующий docker-compose.yml, в основном скопированный из некоторого учебника (https://medium.com/@romaricp/the-perfect-kit-starter-for-a-symfony-4-project-with-docker-and-php-7-2-fda447b6bca1):

version: '3'
services:
  apache:
    build: .docker/apache
    container_name: sf4_apache
    ports:
      - 80:80
      - 443:443
    volumes:
      - .docker/config/vhosts:/etc/apache2/sites-enabled
      - .:/home/wwwroot/sf4:cached
    depends_on:
      - php

  mysql:
    image: mysql:5.7
    container_name: sf4_mysql
    command: "--default-authentication-plugin=mysql_native_password"
    restart: always
    ports:
      - 3306:3306
    volumes:
      - .docker/data/db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: sf4
      MYSQL_USER: sf4
      MYSQL_PASSWORD: sf4

  php:
    build: .docker/php
    container_name: sf4_php
    volumes:
      - .:/home/wwwroot/sf4
    environment:
      - maildev_host=sf4_maildev
    depends_on:
      - maildev
      - mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: sf4_phpmyadmin
    environment:
      PMA_HOST: sf4_mysql
      PMA_PORT: 3306
    ports:
      - 8080:80
    links:
      - mysql

  maildev:
    image: djfarrelly/maildev
    container_name: sf4_maildev
    ports:
      - 8001:80

Теперь моя проблема в том, что мне не удается подключиться к MySQL. Wheter из PHP или PhpMyAdminЯ пробовал следующие строки подключения, но ни одна из них не работает:

DATABASE_URL=mysql://root:root@mysql:3306/sf4
DATABASE_URL=mysql://sf4:sf4@mysql:3306/sf4
DATABASE_URL=mysql://root:root@sf4_mysql:3306/sf4
DATABASE_URL=mysql://sf4:sf4@sf4_mysql:3306/sf4
... and hundreds more

Но я всегда получаю:

PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known

Или

SQLSTATE[HY000] [2002] No route to host

Или

SQLSTATE[HY000] [2002] Connection refused 

1 Ответ

0 голосов
/ 07 октября 2019

Спасибо @emix и @LinPy, которые помогли мне в комментариях, вот фиксированная конфигурация:

version: '3'
services:
  apache:
    build: .docker/apache
    container_name: sf4_apache
    ports:
      - 80:80
      - 443:443
    volumes:
      - .docker/config/vhosts:/etc/apache2/sites-enabled
      - .:/home/wwwroot/sf4:cached
    depends_on:
      - php

  mysql:
    image: mysql:5.7
    container_name: sf4_mysql
    #command: "--default-authentication-plugin=mysql_native_password"
    #restart: always
    ports:
      - 3306:3306
    volumes:
      - .docker/data/db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: sf4
      MYSQL_USER: sf4
      MYSQL_PASSWORD: sf4

  php:
    build: .docker/php
    container_name: sf4_php
    volumes:
      - .:/home/wwwroot/sf4
    environment:
      - maildev_host=sf4_maildev
    depends_on:
      - maildev
      - mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: sf4_phpmyadmin
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
    ports:
      - 8080:80
    links:
      - mysql

  maildev:
    image: djfarrelly/maildev
    container_name: sf4_maildev
    ports:
      - 8001:80

Строка подключения:

DATABASE_URL=mysql://sf4:sf4@mysql/sf4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...