Php 用docker分离mysql服务器和apache Web服务器?
我将apache2 Web服务器放在一个docker容器中。用户可以键入电子邮件并将其存储在SQL数据库中。但是,当我尝试为mysql服务器运行另一个docker容器时,连接被拒绝 webserver的Docker容器:Docker run-t-d-p80:80——名称webserver ubuntu mysql服务器的Docker容器:Docker run-t-d-p3306:3306——名称mysql\u服务器ubuntu 以下是我存储数据的php代码:Php 用docker分离mysql服务器和apache Web服务器?,php,mysql,docker,apache2,Php,Mysql,Docker,Apache2,我将apache2 Web服务器放在一个docker容器中。用户可以键入电子邮件并将其存储在SQL数据库中。但是,当我尝试为mysql服务器运行另一个docker容器时,连接被拒绝 webserver的Docker容器:Docker run-t-d-p80:80——名称webserver ubuntu mysql服务器的Docker容器:Docker run-t-d-p3306:3306——名称mysql\u服务器ubuntu 以下是我存储数据的php代码: <?php $servern
<?php
$servername = "1.1.1.1:3306"; //yes i know i need to put a valid IP here. Just put this as an example
$username = "username";
$password = "password";
$dbname = "Emails";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "invalid email format";
}
$sql = "INSERT INTO users (email)
VALUES ('$email')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
header("Location: Thankyou.html");
exit;
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
如果我理解正确,那么您有一个运行mysql的容器和一个运行apache的容器。
该错误可能表示mysql未配置为接受来自运行apache的子网的连接。
确保apache docker可以成功连接并验证mysql。1.1.1.1是否表示主机地址或docker容器?您可以提供图像的docker文件吗?您无法在普通的ubuntu
容器中运行此脚本。您可能会考虑使用DOCKER组合来启动这两个容器,并且在DOCKER文档中描述了网络环境;即使您手动使用docker network create
创建容器网络,该页面也非常有用。