gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:46:30 26 4
gpt4 key购买 nike

我正在使用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,我可以在 http://localhost正确显示的www文件夹中看到index.htm和phpinfo.php。

接下来,我创建了一个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扩展(以及在哪里安装)

最佳答案

请使用db代替localhost作为主机名。因此,代码将像这样

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

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

关于php - Docker PHP容器无法连接到MariaDB容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48751239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com