【发布时间】:2020-06-03 10:55:09
【问题描述】:
我希望能够连接到我的 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 compose sn-p:
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 一段时间了,没有任何问题。我不确定我的环境发生了什么变化导致它停止工作。
如何让 docker-compose 中的 mysql 容器可以从主机访问?
【问题讨论】:
标签: mysql docker docker-compose