Docker php_network_getaddresses错误

我有下面的运行由PHPDocker生成的Docker容器:

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服务器:

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

它会抛出以下错误:

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

为什么会这样呢?

你可以在这里find这个存储库。 当运行docker-compose up请转到http:// localhost:8080 / classes / serialize.php以产生相同的错误。

当通过PHP(或任何其他)进行连接时,使用容器的名称作为主机,这是学习php-mysql

从而

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

将工作。