Docker php_network_getaddresses error
18,462
When making connection via PHP (or any other), use the container's name as host, which in case is learn-php-mysql.
Thus
$mysqli = new mysqli("learn-php-mysql", "learning", "learning", "learning");
Will work.
Author by
Genert Orginaal
Updated on June 25, 2022Comments
-
Genert Orginaal almost 2 years
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
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\n", $mysqli->connect_error); exit(); }
It will throw following error:
Connect failed: php_network_getaddresses: getaddrinfo failed: Name or service not known
Why does this happen?
.
.
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.