我通过 docker-compose 设置了 2 个单独的堆栈,每个堆栈都是 php + mariadb。第一个有 mariadb 监听 3306 端口:
ports:
- "3306:3306"
我使用 -p 标志build
和up
第二个项目,这样事情就不会混淆:
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 打开防火墙规则
接下来我能做什么?...花了我几个小时来弄清楚如何让事情正常进行...