gpt4 book ai didi

php - "Connection refused",尝试从 Docker 容器内部连接到数据库时

转载 作者:搜寻专家 更新时间:2023-10-30 22:28:32 26 4
gpt4 key购买 nike

我在使用以下 Dockerfile 时遇到一些问题:

FROM php:7.0-apache

RUN a2enmod rewrite

RUN docker-php-ext-install pdo pdo_mysql

COPY php.ini /usr/local/etc/php/
COPY . /var/www/html/

我正在使用 Slim PHP 框架并尝试连接到数据库,但返回以下错误:

HTTP/1.1 500 Internal Server Error Content-Type: text/html {"error": {"text": SQLSTATE[HY000] [2002] Connection refused}

这是引发异常的代码:

// Instantiate a database connection
$container['db'] = function ($c) {
try {
$db = $c['settings']['db'];

$pdo = new PDO("mysql:host=" . $db['host'], $db['user'], $db['pass']);

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

//Create database if not exists
$dbname = "`".str_replace("`","``",$db['dbname'])."`";
$pdo->query("CREATE DATABASE IF NOT EXISTS $dbname");
$pdo->query("use $dbname");

//Create tables if not exists
$pdo->query(
"CREATE TABLE IF NOT EXISTS `Assets` (
`id` INT AUTO_INCREMENT NOT NULL,
`first_property` varchar(50),
`second_property` varchar(50),
PRIMARY KEY (`id`))"
);

return $pdo;
} catch (PDOException $e) {
return $c['response']
->withStatus(500)
->withHeader('Content-Type', 'text/html')
->write('{"error": {"text": ' . $e->getMessage() . '}');
}
};

有谁知道问题出在哪里?

提前致谢!

最佳答案

您可以使用类似...的方式为 MySQL 创建一个 docker 容器

docker run --name MySQLDB -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootpwd -d mysql:5.7

然后(假设是 linux)

docker inspect MySQLDB | grep IPA

获取用于连接的 IP 地址。

关于php - "Connection refused",尝试从 Docker 容器内部连接到数据库时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47928791/

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