mysql - Docker 中的 phpMyAdmin 错误 "No address associated with hostname"?

标签 mysql docker docker-compose phpmyadmin dockerfile

我正在尝试将我的 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

Screennshot of the error

这是我的 docker-compose.yml 片段,其中包括我的数据库服务和 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:

最佳答案

为此,您至少需要创建一个桥接网络并将 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 文件

关于mysql - Docker 中的 phpMyAdmin 错误 "No address associated with hostname"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64752631/

相关文章:

docker - Docker Registry存储未更新

mysql - INSERT 来自其他列的 id,如果值不存在则为 NULL

docker - asp.net 核心 docker-compose 刷新代码更改

MySQL INSERT 与 CALL

docker - 如何使用 docker-machine 和 VirtualBox 创建基于 ubuntu 的 docker 主机?

mysql - 为 MySQL/Tomcat/Maven Java Webapp 创建 Docker 文件

linux - 从另一台电脑到 docker 的隧道 ssh

docker - 使用 docker-compose 不存在 postgres 表

mysql - 描述命令和外键

mysql - SQL 语法错误;检查与您的 MySQL 服务器版本相对应的手册,了解在附近使用的正确语法