首页 > 解决方案 > 如何使用 docker-compose 连接 php 和 mysql?

问题描述

我创建了一个简单的文件来测试phpmysql的连接。

<?php
$link = mysqli_connect("port", "root", "123456", "mysql");

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "</br>";

    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "</br>";

    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL. "\n";
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL. "\n";

mysqli_close($link);
?>

在第一行,我必须写下“端口”的真实端口号,但我不知道我的端口号是什么。

的 docker-compse.yml如下所示:

version: '3'
services:
    nginx:
        image: nginx:latest
        ports:
            - "3002:80"
        volumes:
            - "./conf.d:/etc/nginx/conf.d"
            - "./workshop:/workshop"
        networks:
            - app_net
        container_name: "compose-nginx"
    php:
        build:
            context: .
            dockerfile: ./php-mysqli/Dockerfile
        volumes:
            - "./workshop:/workshop"
        networks:
            - app_net
        container_name: "compose-php"
    mysql:
        image: mysql:5.7
        environment:
            - MYSQL_ROOT_PASSWORD=123456
        networks:
            app_net:
                ipv4_address: 10.10.10.1
        container_name: "compose-mysql"
networks:
    app_net:
        driver: bridge
        ipam:
            config:
                - subnet: 10.10.0.0/16

好像我差不多完成了,我已经连接了nginx和php。

但是我不知道如何连接php和mysql,有谁能帮我解决这个问题吗?

标签: dockerdocker-compose

解决方案


的第一个参数mysqli_connect需要是您的数据库服务器的主机名(不是端口),在 docker-compose 中是服务名称。所以你需要:

mysqli_connect('mysql', ...)

根据文档,端口是参数 5。它默认为 3306,因此您不需要传递它。


推荐阅读