【问题标题】:Docker with PHP and MySql - $servername Error [duplicate]使用 PHP 和 MySql 的 Docker - $servername 错误 [重复]
【发布时间】:2018-04-09 06:26:57
【问题描述】:

我有一个用 PHP 和 MySql 开发的项目。

当我使用与 DB 的连接时,我将连接设置如下:

 // Define $username and $password
$username=$_POST['username'];
$password=$_POST['password'];


/* -------------------------------- CONNESSIONE -------------------------------------- */
$servername = "localhosto";
$username_db = "xxxxxx";
$password_db = "yyyyyy";
$db = "zzzzzz";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$db", $username_db, $password_db);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //echo "Connected successfully<br/><br/>";
}
catch(PDOException $e)
{
    echo "Connection failed: " . $e->getMessage()."<br/><br/>";
}

项目运行正常,连接MySql没有问题。

下一步我创建了一个带有以下 docker 文件的 Docker 映像:

FROM php:7.0-apache


RUN apt-get update \
  && apt-get install -y --no-install-recommends libpq-dev \
  && docker-php-ext-install mysqli pdo_pgsql pdo_mysql


COPY / /var/www/html
EXPOSE 80

我已经创建了图像和容器:

docker build -t mysoftware C:\Users\mysoftware
docker run -d -p 5000:80 mysoftware

但是 PHP 应用程序没有连接到 MySql。

我需要用服务器名称更改连接:

$servername = "SERVER_NAME";

如果应用在没有容器的情况下正确运行,为什么我会报错??

【问题讨论】:

    标签: php mysql docker


    【解决方案1】:

    在容器内运行时,localhost 不会解析到宿主机,而是引用容器 IP 地址。

    您需要从容器内连接到主机。对于该检查:From inside of a Docker container, how do I connect to the localhost of the machine?

    【讨论】:

      【解决方案2】:

      (假设 *nix)一旦你运行了 mysql docker 容器......

      docker ps
      

      并找到正在运行的 mysql 容器的名称。然后去寻找IP地址...

      docker inspect <name_of_container> | grep IPAddress
      

      然后使用此 IP 地址连接服务器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-23
        • 2012-02-04
        • 2014-08-08
        • 1970-01-01
        • 1970-01-01
        • 2013-10-04
        • 2016-04-02
        相关资源
        最近更新 更多