0

我不确定这是错误还是功能。但是几个月以来,我一直在为我的本地开发数据库运行这个 docker-compose 设置,自从我更新了 Docker 和 Lando 之后,它就停止了工作。

如您所见,我将它用于一些由 Lando 管理的 php 站点。自上次更新以来,要么 要么ports指令network不适用于 MySQL 容器。

  • 如果我将它与下面的代码片段一起使用,则该ports指令不起作用。这意味着我无法从 QueryPie 连接localhost:3306,但可以从另一个mysql_db作为主机的兰多 docker 容器连接。
  • 如果我注释掉该networks指令,则该ports指令有效。但该networks指令显然不是。这意味着我可以从 QueryPie 连接localhost:3306,但我无法从另一个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,我的 docker-compose 版本是 1.25.5。

4

1 回答 1

0

所以我通过删除networks指令并仅使用ports. 在lando/docker 上运行的 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
于 2020-05-18T08:35:24.140 回答