【问题标题】:Connect container created with docker-compose to another one created with docker run将使用 docker-compose 创建的容器连接到使用 docker run 创建的另一个容器
【发布时间】:2019-08-13 01:25:27
【问题描述】:

我使用 docker-compose (php:7.2.20-apache) 创建了以下容器:

version: "3"
services
  php72:
    build:
     context: .
    ports:
      - 80:80
    volumes:
      - ./www:/var/www/html

我使用 docker run 创建了以下容器:

docker run --name mysql5 -p 3306:3306 -v mysql5-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.27

我可以使用 MySQL Workbench 连接到 mysql,但是我在第一个容器(使用 docker-compose 创建的 php7)中的应用程序无法使用相同的连接凭据连接到数据库。

如何解决?

PS:这是对 MacOs 开发环境的测试

【问题讨论】:

    标签: php mysql docker docker-compose


    【解决方案1】:

    你可以管理一个用户自定义的桥接器让他们相互通信,见this,详情如下:

    1.创建用户定义的桥梁

    $ docker network create my-net
    

    2。将 mysql 容器链接到此网络

    $ docker run --name mysql5 -p 3306:3306 -v mysql5-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.27
    $ docker network connect my-net mysql5
    

    3.配置docker-compose使用网络

    version: "3"
    services
      php72:
        build:
         context: .
        ports:
          - 80:80
        volumes:
          - ./www:/var/www/html
    
    networks:
      default:
        external:
          name: my-net
    

    那么,来自this

    用户定义的网桥提供容器之间的自动 DNS 解析。

    可以通过服务名或容器名互相访问。

    【讨论】:

      【解决方案2】:

      首先确保您在 php:7.2.20-apache 容器中为数据库使用正确的地址,因为您的 MySQL Workbench 很可能使用与 php:7.2.20-apache 容器不同的 IP 地址(例如 127.0.0.1) (例如 172.19.0.1)

      通过列出您的网络来确保容器在同一网络上

      docker network ls
      

      如果不是,将它们连接到同一个

      docker network connect
      

      用法:docker network connect [OPTIONS] NETWORK CONTAINER (有关更多信息,请参阅“docker network connect --help”。)

      您可以使用命令获取有关每个网络的更多信息

      docker network inspect
      

      用法:docker network inspect [OPTIONS] NETWORK [NETWORK...]

      【讨论】:

        猜你喜欢
        • 2016-12-01
        • 1970-01-01
        • 2016-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多