【问题标题】:Docker Compose - getaddrinfo failed: Name or service not known inDocker Compose - getaddrinfo 失败:名称或服务未知
【发布时间】:2019-12-17 06:34:09
【问题描述】:

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

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

PHP 容器似乎不知道我的 MariaDB 容器。配置如何看起来不错。如果我公开我的数据库容器,我可以在本地连接到它。

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

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

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

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

    【讨论】:

    • 再简单一点,删除所有手动networks: 配置,让两个容器都在编写sets up for youdefault 网络上。
    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2017-02-21
    • 2013-12-02
    • 2016-02-07
    • 1970-01-01
    相关资源
    最近更新 更多