php - Docker Compose 与 PHP、MySQL、nginx 连接问题

标签 php mysql nginx docker docker-compose

我在连接到 MySQL 容器时遇到问题。

docker-compose.yml

version: '2'

services:
    mysql:
        image: mysql:latest
        environment:
            MYSQL_ROOT_PASSWORD: JoeyW#1999
            MYSQL_DATABASE: wiput
            MYSQL_USER: web
            MYSQL_PASSWORD: Web#1234
        volumes:
            - ./mysql:/var/lib/mysql
        networks:
            - code-network
    php:
        image: wiput1999/php:latest
        volumes:
            - ./code:/code
        networks:
            - code-network
    nginx:
        image: nginx:latest
        ports:
            - "80:80"
            - "443:443"
        volumes:
            - ./code:/code
            - ./site.conf:/etc/nginx/conf.d/default.conf
            - /etc/letsencrypt:/etc/letsencrypt
        networks:
            - code-network
networks:
    code-network:
        driver: bridge

PHP 测试脚本:

<?php
$servername = "localhost";
$username = "root";
$password = "JoeyW#1999";

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

这个脚本回复我:

Connection failed: SQLSTATE[HY000] [2002] No such file or directory

我的代码有什么问题?因为我觉得应该没问题

如果有人有更好的解决方案谢谢你的帮助。

最佳答案

$servername = "localhost"; 更改为 $servername = "mysql";。您的 mysql 服务不在您的网络服务器容器的本地主机上。您应该改用服务名称

关于php - Docker Compose 与 PHP、MySQL、nginx 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41278492/

相关文章:

php - 像在 Javascript 中一样重影 PHP 函数

php - 尝试在 Codeigniter 中传递 url 中的值时遇到 404 页面未找到

MYSQL 5.5 嵌套存储过程错误处理

php - 如何在 php 中调用 MySQL basedir?

http - Nginx 将 HTTP 重定向到 HTTPS 部分工作

php - 警告 : is_dir(): open_basedir restriction in effect. 文件 (/) 不在允许的路径内

php - 第 n 个 child 调整图像缩略图和标题的大小

php - PHP替换字符串中的随机词

mysql - order by 使查询变慢

python - 将 header 从 nginx 传递到运行 Flask 应用程序的 uWSGI 后端