gpt4 book ai didi

php - Docker php_network_getaddresses 错误

转载 作者:IT老高 更新时间:2023-10-28 21:22:25 34 4
gpt4 key购买 nike

我正在运行以下由 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();
}

它会抛出以下错误:

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

为什么会这样?

.

.

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

最佳答案

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

因此

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

会起作用的。

关于php - Docker php_network_getaddresses 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41913471/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com