Ошибка «Чтение исходного пакета связи» при попытке подключиться к контейнеру mysql docker с хоста - PullRequest
0 голосов
/ 19 февраля 2020

Я бы хотел иметь возможность подключиться к своему docker контейнеру, как если бы сервер MySQL был установлен на моей локальной машине. Я проверяю свое соединение с:

mysql -u root -proot -h 127.0.0.1 -P 3306 --protocol=tcp

Если я создаю контейнер, используя docker, я могу успешно это сделать. Например:

docker run --name some-mysql-standalone -p 127.0.0.1:3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.29

Если я использую контейнер в качестве службы в docker -compose, я получаю сообщение об ошибке:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

MySQL сервер работает внутри контейнера и я могу получить к нему доступ.

Мой docker составной фрагмент:

version: '2'

services:

    mysql:

        image: mysql:5.7.29
        container_name: some_mysql
        restart: unless-stopped

        volumes:
            - ./mysql/data:/var/lib/mysql
            - ./mysql/init:/docker-entrypoint-initdb.d

        ports:
            - 3306:3306

        environment:
            MYSQL_DATABASE: some_mysql
            MYSQL_USER: root
            MYSQL_PASSWORD: root
            MYSQL_ROOT_PASSWORD: root

Интересно то, что я уже некоторое время пользуюсь этим docker-compose.yml без каких-либо проблем. Я не совсем уверен, что изменилось в моей среде, что заставило его перестать работать.

Как я могу сделать мой mysql контейнер в docker -compos доступным с хост-машины?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

С практической точки зрения я заставил это работать , явно создав сеть . Вот пример:

version: '2'

services:

    mysql:

        image: mysql:5.7.29
        container_name: some_mysql
        restart: unless-stopped

        volumes:
            - ./mysql/data:/var/lib/mysql
            - ./mysql/init:/docker-entrypoint-initdb.d

        ports:
            - 3306:3306

        environment:
            MYSQL_DATABASE: some_mysql
            MYSQL_USER: root
            MYSQL_PASSWORD: root
            MYSQL_ROOT_PASSWORD: root
        networks: 
            - default

...


networks:
    default:
        external:
            name: somename_default

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

0 голосов
/ 19 февраля 2020

Найдена похожая ошибка на этой теме . Попробуйте проверить, не была ли изменена какая-либо конфигурация вашего брандмауэра, и попробуйте привязать ваш SQL сервер к 0.0.0.0 вместо localhost или 127.0.0.1.

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