Dino
Dino

Reputation: 8292

Docker Compose - getaddrinfo failed: Name or service not known in

I am having a mysql connection problem when trying to access my PHP container (Which is making a connection to MariaDB container)

mysqli_connect(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/html/config.php on line 16

It looks like the PHP container is not aware of my MariaDB container. How ever the configuration seems good. If I expose my db container, I am able to connect to it locally.

docker-compose.yaml

version: "3"
networks:
  api_server:
services:
  db:
    image: mariadb
    restart: always
    volumes:
      - ./mariadb_data:/var/lib/mysql
      - ./database_dump/dump.sql:/docker-entrypoint-initdb.d/dump.sql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: user
      MYSQL_PASSWORD: pass
      MYSQL_DATABASE: somedb
  php-server:
    image: php.core.image
    networks:
      - api_server
    build:
      context: ./php
      dockerfile: Dockerfile
    depends_on:
      - db
    environment:
      ENV_NAME: dev
    ports:
      - 80:80

Dockerfile for PHP

FROM php:7.2-apache
RUN docker-php-ext-install -j$(nproc) mysqli

COPY . /var/www/html/

And my connection in php looks like:

define('DB_SERVER', 'db');
define('DB_USERNAME', 'user');
define('DB_PASSWORD', 'pass');
define('DB_DATABASE', 'somedb');

$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

Upvotes: 1

Views: 16564

Answers (1)

Oleg Russkin
Oleg Russkin

Reputation: 4404

php-server service is in api_server network, while db is in default network.

You need to add db to same network as php-server - either to api_server network or add another network and add both services to it.

Upvotes: 6

Related Questions