我创建了一个简单的文件来测试 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,有什么可以帮助我解决这个问题的吗?
答案 0 :(得分:0)
mysqli_connect
的第一个参数必须是您的数据库服务器的主机名(不是端口),在docker-compose中是服务名称。所以你需要:
mysqli_connect('mysql', ...)
根据the docs,端口为参数5。默认值为3306,因此您无需传递该端口。