Docker Compose-getaddrinfo失败:名称或服务未知

时间:2019-12-17 06:34:09

标签: docker docker-compose

尝试访问我的PHP容器时,我遇到了mysql连接问题(正在建立与MariaDB容器的连接)

  

mysqli_connect():php_network_getaddresses:getaddrinfo失败:名称   或在线 /var/www/html/config.php 中未知的服务    16

似乎PHP容器不知道我的MariaDB容器。配置似乎如何。如果我公开了db容器,则可以在本地连接它。

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

适用于PHP的Dockerfile

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

COPY . /var/www/html/

我在php中的连接如下:

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);

1 个答案:

答案 0 :(得分:2)

php-server服务在api_server网络中,而db在默认网络中。

您需要将db添加到与php-server相同的网络中-要么添加到api_server网络中,要么添加另一个网络并将两个服务都添加到其中。