我不确定这是一个bug还是一个特性。但几个月来,我一直在为我的本地开发数据库运行这个docker compose设置,自从我更新了docker和Lando后,它就停止了工作。
正如你所看到的,我将它用于一些用Lando管理的php网站。自从上次更新以来,ports
或network
指令在MySQL容器上不起作用。
- 如果将其与下面的代码段一起使用,则
ports
指令不起作用。这意味着我不能从localhost:3306
上的QueryPie连接,但可以从另一个以mysql_db
为主机的lando-docker容器连接 - 如果我注释掉
networks
指令,则ports
指令为工作但networks
指令显然不是。这意味着我可以从localhost:3306
上的QueryPie连接,但我不能从另一个以mysql_db
为主机的lando-docker容器连接
在更新之前,他们合作得很好。所以我可以在QueryPie中打开MySQL,并从Lando容器访问数据库。
version: '3'
services:
mysql:
container_name: mysql_db
restart: always
image: mysql:latest
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=secret
volumes:
- ./mysql-data:/var/lib/mysql
networks:
- lando_bridge_network
networks:
lando_bridge_network:
external: true
我的docker引擎是19.03.8,我的dockercompose版本是1.25.5。
因此,我通过删除networks
指令并仅使用ports
公开端口3306来解决此问题。运行在lando/docker I上的PHP站点要连接的内部docker IP:
define('DB_HOST', 'host.docker.internal');
在QueryPie(在主机上运行(中,我可以连接localhost:3306
version: '3'
services:
mysql:
container_name: mysql_db
restart: always
image: mysql:latest
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=secret
volumes:
- ./mysql-data:/var/lib/mysql