尝试访问我的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);
答案 0 :(得分:2)
php-server
服务在api_server
网络中,而db
在默认网络中。
您需要将db
添加到与php-server
相同的网络中-要么添加到api_server
网络中,要么添加另一个网络并将两个服务都添加到其中。