docker compose MySQL container [2002] Соединение отклонено - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь собрать контейнеры для создания докеров для Nginx + PHP (Laravel) + MySQL, но я получаю сообщение об ошибке "Отказано в соединении"

docker-compose.yml

version: "3"
services:

    nginx:
        image: nginx:latest
        ports:
            - '8080:80'
        volumes:
            - ./nginx:/etc/nginx/conf.d
            - ./logs/nginx:/var/logs/nginx
            - ./apps:/var/www/html
        depends_on:
            - php
        restart: always

    php:
        image: laradock/php-fpm:2.2-7.2
        volumes:
            - ./apps:/var/www/html
        restart: always
    mysql:
        image: mariadb
        ports:
            - '33060:3306'
        volumes:
            - ./db:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=root
        restart: always

В ./apps У меня есть новое приложение Laravel с базовой настройкой SQL

Все контейнеры работают без ошибок, и я могу подключиться к контейнеру MySQL, используя

mysql -u 127.0.0.1 -P 33060 -u root -p

но я получаю сообщение об ошибке 2002, когда пытаюсь получить доступ из браузера или направить ssh в контейнер php.

У меня запущены nginx и mysql на сервере, поэтому я использую порты 8080 и 33060, не уверен, что это проблема.

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=secret

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 15 мая 2018

получение идеи от этого выпуска Github

Мое первое предположение заключается в том, что он умирает, пытаясь найти файл сокета mysql unix, когда ему нужно подключиться через нелокальное соединение.Если вы используете файл compose для их запуска, то вы можете подключиться к имени dns, предоставленному docker (т. Е. Links: docker-mysql, устанавливает для dns имя docker-mysql).Таким образом, вы должны изменить свою линию соединения:

- php -r "new PDO('mysql:host=localhost;port=3306;charset=utf8', 'root', '123123');"

+ php -r "new PDO('mysql:host=docker-mysql;port=3306;charset=utf8', 'root', '123123');"

решил эту проблему, изменив DB_HOST на имя контейнера докера в.env файл

DB_HOST=docker_mysql_1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...