Php Docker MySQL mysqli::real_connect():(HY000/2002):连接被拒绝

Php Docker MySQL mysqli::real_connect():(HY000/2002):连接被拒绝,php,mysql,docker,codeigniter,docker-compose,Php,Mysql,Docker,Codeigniter,Docker Compose,我是个新手。我正在尝试连接两个容器,它们是CodeIgniter应用程序和MySQL。我似乎无法解决我的web应用程序上的“mysqli::real_connect:HY000/2002:连接被拒绝”问题。我能够从容器内部ping到另一个容器,反之亦然 这是我的docker-compose.yml文件: Dockerfile: 以下是我的database.php配置: $active_group = 'default'; $query_builder = TRUE; $db['default'

我是个新手。我正在尝试连接两个容器,它们是CodeIgniter应用程序和MySQL。我似乎无法解决我的web应用程序上的“mysqli::real_connect:HY000/2002:连接被拒绝”问题。我能够从容器内部ping到另一个容器,反之亦然

这是我的docker-compose.yml文件:

Dockerfile:

以下是我的database.php配置:

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'dbport' => '3306',
    'hostname' => 'db',
    'username' => 'root',
    'password' => '',
    'database' => 'ciblog',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => FALSE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);
有谁能帮我确定这个问题吗?先谢谢你。
这是我的GitHub存储库,以备您查看文件:

在基于Docker Compose的设置中,您可以使用服务名称作为主机名。在您的示例中,设置

'hostname' => 'db'
对此进行了更详细的讨论


Docker容器没有一致的IP地址,手动查找它们通常是没有用的。您不需要链接:在现代Docker中,删除该行也不会有害。

在基于Docker Compose的设置中,您可以使用服务名称作为主机名。在您的示例中,设置

'hostname' => 'db'
对此进行了更详细的讨论


Docker容器没有一致的IP地址,手动查找它们通常是没有用的。您不需要链接:在现代Docker中,删除该行也不会有害。

我终于找到了它。更改MySQL版本是可行的

image: mysql:5.7

资料来源:

我终于拿到了。更改MySQL版本是可行的

image: mysql:5.7

来源:

在基于Docker Compose的设置中,可以使用服务名称作为主机名。在您的示例中,设置

'hostname' => 'db'

'hostname'=>'db'

在基于Docker Compose的设置中,您可以使用服务的名称作为主机名。在您的示例中,设置

'hostname' => 'db'

“hostname”=>“db”

谢谢您的建议,先生,我会记住的。谢谢您的建议,先生,我会记住的。