Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用docker分离mysql服务器和apache Web服务器?_Php_Mysql_Docker_Apache2 - Fatal编程技术网

Php 用docker分离mysql服务器和apache Web服务器?

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

我将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

$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
创建容器网络,该页面也非常有用。