Docker PHP容器无法连接到MariaDB容器

时间:2018-02-12 16:35:23

标签: php docker nginx mariadb

我使用docker使用这些命令在单独的容器中启动Nginx,PHP和mariaDB:

# DB
docker run  --name db -d -p 3306:3306 --restart=always -v /opt/db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<pass> -e MYSQL_USER=dbuser -e MYSQL_PASSWORD=<pass> mariadb

# PHP
docker run --name php -p :9000 -d --restart=always --link=db:db -v /www:/data php:fpm

# WEB
docker run --name web -d -p 80:80 --link php --link=db:db -v /www:/data -v /opt/nginx/default.conf:/etc/nginx/conf.d/default.conf nginx:latest

(当然填写了我的密码)到目前为止一切都很好,有一个在本地运行的旋转nginx,我可以看到我的www文件夹中的index.htm和phpinfo.php正确显示在http://localhost

接下来,我创建了一个包含以下内容的dbcheck.php页面:

<?php
$dbh = mysqli_connect('localhost', 'dbuser', '<pass>');
if (!$dbh) {
    die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully to MariaDB database';
mysqli_close($dbh);
?>

结果是PHP没有安装MySQL扩展。 我做错了什么和/或我如何安装MySQL扩展(以及在哪里)

1 个答案:

答案 0 :(得分:5)

请使用db代替localhost作为主机名。所以,代码将是这样的

$dbh = mysqli_connect('db', 'dbuser', '<pass>');

因为您使用此选项--link=db:db将php容器与mariadb容器相关联。这意味着您链接到db容器并将其命名为db。因此,php容器只知道db作为mariadb容器的主机名