Я бы хотел иметь возможность подключиться к своему 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 доступным с хост-машины?