如何使用docker-compose连接php和mysql?

时间:2018-09-15 11:28:11

标签: docker docker-compose

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

<?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);
?>

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

我的 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,有什么可以帮助我解决这个问题的吗?

1 个答案:

答案 0 :(得分:0)

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

mysqli_connect('mysql', ...)

根据the docs,端口为参数5。默认值为3306,因此您无需传递该端口。