0

我通过 docker-compose 设置了 2 个单独的堆栈,每个堆栈都是 php + mariadb。第一个有 mariadb 监听 3306 端口:

ports:
  - "3306:3306"

我使用 -p 标志buildup第二个项目,这样事情就不会混淆:

docker-compose -p project2 build && docker-compose -p project2 up

在第二个项目中,我必须更改 mysql 的侦听端口:

ports:
  - "3308:3308"

...否则 docker 守护进程说 3306 已经被占用,我理解这似乎是合乎逻辑的

它给出了以下内容,使用docker ps -a

 3306/tcp, 0.0.0.0:3308->3308/tcp

我现在的问题是我无法从我的 Windows 主机访问数据库,我收到此错误:

错误 2013 (HY000):在“握手:读取初始通信数据包”时失去与 MySQL 服务器的连接,系统错误:11

我在我的 mariadb2 Dockerfile 中尝试了几件事

  • 添加host.docker.internal/etc/hosts.allow
  • 添加bind-address=host.docker.internal(也尝试过 127.0.0.1,也尝试过 0.0.0.0)到/etc/mysql/my.cnf
  • 暴露 3308

我也尝试从 3308 端口/TCP 打开防火墙规则

接下来我能做什么?...花了我几个小时来弄清楚如何让事情正常进行...

4

0 回答 0