【问题标题】:phpMyAdmin error "No address associated with hostname" in Docker?Docker中的phpMyAdmin错误“没有与主机名关联的地址”?
【发布时间】:2020-11-09 13:29:35
【问题描述】:

我正在尝试将我的 Laravel 项目容器化。我的 docker-compose.yml 中有以下服务

  1. laravel_app
  2. 数据库
  3. nginx
  4. phpmyadmin

除了 PHPMyAdmin 之外,它们都运行良好。它已构建并提供 phpMyAdmin 登录页面,但当我输入凭据时出现以下错误。

Cannot log in to the MySQL server

mysqli::real_connect(): php_network_getaddresses: getaddrinfo failed: No address associated with hostname

mysqli::real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No address associated with hostname

这是我的 docker-compose.yml sn-p,其中包括我的数据库服务和 phpmyadmin 服务

#The Database

  database:
    container_name: mysql_database
    image: mysql:5.7
    volumes:
      - dbdata:/var/lib/mysql
    environment:
      - "MYSQL_DATABASE=dev-db"
      - "MYSQL_USER=phpmyadmin"
      - "MYSQL_PASSWORD=phpmyadmin"
      - "MYSQL_ROOT_PASSWORD=123456"
    ports:
      - 8991:3306


#PHPMyAdmin Service
  phpmyadmin:
    container_name: phpmyadmin
    image: phpmyadmin/phpmyadmin
    ports:
    - "8992:80"
    depends_on: 
      - database
    environment:
      - "PMA_HOST:database"
      - "MYSQL_USER:phpmyadmin"
      - "MYSQL_PASSWORD:phpmyadmin"
      - "MYSQL_ROOT_PASSWORD:123456"
      - "UPLOAD_LIMIT:3000000000"


# redis

  cache:
    image: redis:3.0-alpine


volumes:
  dbdata:

【问题讨论】:

    标签: mysql docker docker-compose phpmyadmin dockerfile


    【解决方案1】:

    为此,您至少需要创建一个桥接网络并将 phpmyadmin 和您的数据库连接到它。

    这样的事情应该可以工作:

    version: "3"
    volumes:
      dbdata:
    networks:
      backend:
        driver: bridge
    services:
      database:
        container_name: mysql_database
        image: mysql:5.7
        volumes:
          - dbdata:/var/lib/mysql
        environment:
          - "MYSQL_DATABASE=dev-db"
          - "MYSQL_USER=phpmyadmin"
          - "MYSQL_PASSWORD=phpmyadmin"
          - "MYSQL_ROOT_PASSWORD=123456"
        ports:
          - 8991:3306
        networks:
          - backend
    
      phpmyadmin:
        container_name: phpmyadmin
        image: phpmyadmin/phpmyadmin
        ports:
          - "8992:80"
        depends_on:
          - database
        environment:
          - "PMA_HOST=database"
          - "MYSQL_USER=phpmyadmin"
          - "MYSQL_PASSWORD=phpmyadmin"
          - "MYSQL_ROOT_PASSWORD=123456"
          - "UPLOAD_LIMIT=3000000000"
        networks:
          - backend
      
    

    另外我不建议暴露数据库端口

    已编辑:修复了 docker-compose 文件

    【讨论】:

    • 将“后端”网络添加到链接时会出现错误:服务“数据库”有一个未定义的服务“后端”链接。我尝试将“后端”添加到 phpmyadmin 和 database services 的网络中。它已经建成,但存在同样的问题。
    • 是的,我的错,是“网络”而不是“链接”。我发现了错误。它在 phpmyadmin 环境语法中,而不是 PMA_HOST:database 你应该写 PMA_HOST=database 和其他变量。
    • 另外,你可以使用links,而不是网络,其值为database:database。我更喜欢使用网络。这是 docker-compose 文档的链接:docs.docker.com/compose/compose-file/#links
    • 就是这样,使用 : 而不是 = 解决了。非常感谢。不敢相信我没看到。
    【解决方案2】:

    就像Fominykh Maxim 提到的那样,我的错误是由在 phpmyadmin 服务分配环境值时的语法错误引起的。我使用 PMA_HOST:database 而不是 PMA_HOST=database

    【讨论】:

      猜你喜欢
      • 2022-10-04
      • 2021-01-20
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 2017-12-04
      • 2018-12-04
      • 2021-10-02
      相关资源
      最近更新 更多