Reputation: 8292
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
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