docker - 如何使用 docker-compose 连接 php 和 mysql?
问题描述
我创建了一个简单的文件来测试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);
?>
在第一行,我必须写下“端口”的真实端口号,但我不知道我的端口号是什么。
我的 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,有谁能帮我解决这个问题吗?
解决方案
的第一个参数mysqli_connect
需要是您的数据库服务器的主机名(不是端口),在 docker-compose 中是服务名称。所以你需要:
mysqli_connect('mysql', ...)
根据文档,端口是参数 5。它默认为 3306,因此您不需要传递它。
推荐阅读
- r - 以 LaTeX 格式渲染反应式观星表
- javascript - 为什么我的带有 setInterval() 的反向 for 循环不起作用?
- tsql - 在 T-SQL 中,如何在字段的开头添加额外的文本?
- java - 哪种机制最合适
- javascript - TaxCalculator 函数 Javascript 代码不起作用
- javascript - node.js - 从异步函数推送到数组
- scala - 一个专门的参数类/特征可以扩展另一个特征吗?
- android - 我已将我的 Google API 密钥限制为我的移动应用程序包。还能被盗吗?
- java - Spring-boot:应用程序无法启动
- java - 控制面板和终端之间的 Java 版本不匹配