沃梦达 / 编程问答 / php问题 / 正文

Docker php_network_getaddresses 错误

Docker php_network_getaddresses error(Docker php_network_getaddresses 错误)

本文介绍了Docker php_network_getaddresses 错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在运行以下由 PHPDocker 生成的 Docker 容器:

I have following Docker containers running that were generated by PHPDocker:

learn-php-mysql:
  image: mysql:5.7
  container_name: learn-php-mysql
  volumes:
    - "./.data/db:/var/lib/mysql"
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: learning
    MYSQL_DATABASE: learning
    MYSQL_USER: learning
    MYSQL_PASSWORD: learning

learn-php-webserver:
  image: phpdockerio/nginx:latest
  container_name: learn-php-webserver
  volumes:
    - ./code:/code
    - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
  ports:
   - "8080:80"
  links:
   - learn-php-php-fpm

learn-php-php-fpm:
  build: .
  dockerfile: php-fpm/Dockerfile
  container_name: learn-php-php-fpm
  volumes:
    - ./code:/code
    - ./php-fpm/php-ini-overrides.ini:/etc/php/7.1/fpm/conf.d/99-overrides.ini
  links:
    - learn-php-mysql:mysql

一切正常,除了尝试通过 PHP 代码连接到 MySQL 服务器时:

Everything works fine, except for when trying to connect to MySQL server via PHP code:

$mysqli = new mysqli("db", "learning", "learning", "learning");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s
", $mysqli->connect_error);
    exit();
}

它会抛出以下错误:

连接失败:php_network_getaddresses:getaddrinfo 失败:名称或服务未知

Connect failed: php_network_getaddresses: getaddrinfo failed: Name or service not known

为什么会这样?

.

.

您可以在此处找到此存储库.当运行 docker-compose up 时,转到 http://localhost:8080/classes/serialize.php 产生同样的错误.

You can find repository for this here. And when running docker-compose up go to http://localhost:8080/classes/serialize.php to produce same error.

推荐答案

通过 PHP(或任何其他)连接时,使用容器的名称作为主机,如果是 learn-php-mysql.

When making connection via PHP (or any other), use the container's name as host, which in case is learn-php-mysql.

因此

$mysqli = new mysqli("learn-php-mysql", "learning", "learning", "learning");

会起作用的.

这篇关于Docker php_network_getaddresses 错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:Docker php_network_getaddresses 错误

基础教程推荐