Docker не может подключиться к MySQL с запущенным docker-compose up - PullRequest
0 голосов
/ 07 апреля 2019

Я использую эту конфигурацию Docker: https://github.com/romaricp/kit-starter-symfony-4-docker

Я запускаю среду с помощью:

сборка docker-compose

с последующим:

docker-compose up -d

Все работает нормально, но есть проблема со службой MySQL.Я получаю сообщение об ошибке Symfony:

«Произошло исключение в драйвере: не удалось найти драйвер»

, а также ошибка PMA при попытке войти в БД:

mysqli_real_connect (): php_network_getaddresses: getaddrinfo не удалось: имя не разрешается

Есть идеи, как я могу заставить его работать?

docker-compose.yml:

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

mysql:
    image: mysql
    container_name: sf4_mysql
    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
    ports:
        - 8080:80
    links:
        - mysql

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

Также я открыл логи mysql и вижу это:

2019-04-07T12: 00: 30.943414Z 0 [Система] [MY-010931] [Сервер] / usr / sbin / mysqld: готов к подключению.Версия: '8.0.15' сокет: '/var/run/mysqld/mysqld.sock' порт: 3306 MySQL Community Server - GPL.

Возможно, порт неправильный, и поэтому я могу 'т подключиться?

Ответы [ 3 ]

1 голос
/ 07 апреля 2019

Для службы phpmyadmin, я думаю, вы должны установить переменные окружения PMA_HOST и PMA_PORT следующим образом:

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

В вашем контейнере mysql должна быть инструкция command в началеустановите плагин аутентификации (есть проблема с коннекторами с mysql 8), подробнее здесь

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

в вашем приложении Symfony, строка подключения находится в файле .envи должен иметь следующий формат:

DATABASE_URL = mysql: // mysql_user : mysql_user_password @ mysql_host : mysql_port / db_name

mysql_user : ваш пользователь mysql (например, root)

mysql_user_password :пароль пользователя (например, root)

mysql_host : должен содержать имя службы контейнера MySQL, расположенное в вашем файле docker-compose.yml (в данном случае mysql)

mysql_port : внутренний порт контейнера mysql (в данном случае 3306)

db_name : thБаза данных, к которой вы хотите подключиться.

, DATABASE_URL может выглядеть так:

DATABASE_URL=mysql://root:root@mysql:3306/sf4

остановите ваши контейнеры после этих изменений и запустите их снова.

Надеюсь, это поможет.

0 голосов
/ 07 апреля 2019

Я думаю, у вас проблемы с подключением контейнеров.Я предлагаю вам использовать сеть coustom вместо ссылок.Чтобы все контейнеры могли видеть друг друга

0 голосов
/ 07 апреля 2019

Вы должны выставить порт mysql 3306:

  mysql:
    image: mysql
    container_name: sf4_mysql
    volumes:
    - .docker/data/db:/var/lib/mysql
    restart: always
    ports:
    - "3306:3306"
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: sf4
        MYSQL_USER: sf4
        MYSQL_PASSWORD: sf4
    networks:
    - default
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...