docker 部署 php 项目时,数据库连接失败可通过以下方法解决:暴露数据库端口;创建网络连接数据库和 php 容器;使用服务发现,在容器内使用数据库名称连接;安装 pdo mysql 扩展;使用环境变量连接数据库。

Docker 部署 PHP 项目时数据库连接失败的解决方法
部署 PHP 项目到 Docker 时,由于容器的隔离特性,项目可能无法连接到外部数据库。针对这一问题,有以下解决方法:
1. 暴露数据库端口
立即学习“PHP免费学习笔记(深入)”;
在 Dockerfile 中,将数据库端口暴露给容器,例如:
EXPOSE 3306
2. 创建网络
使用 Docker 创建一个网络,将数据库和 PHP 容器连接起来,例如:
docker network create my-network
3. 将数据库连接到网络
将数据库容器连接到创建的网络,例如:
docker run -d --name my-database --network my-network -p 3306:3306 mysql
4. 将 PHP 容器连接到网络
将 PHP 容器连接到同一网络,例如:
docker run -d --name my-php --network my-network -v /localpath:/var/www -p 80:80 php:7.4-apache
5. 使用服务发现
使用 Docker 服务发现功能,在容器内部使用数据库名称而不是 IP 地址进行连接,例如:
Docker Compose
version: "3.9"
services:
php:
build: .
volumes:
- ./:/var/www
depends_on:
- database
database:
image: mysql:8.0Dockerfile
FROM php:7.4-apache RUN docker-php-ext-install pdo_mysql ENV DB_HOST=database ENV DB_USER=root ENV DB_PASSWORD=password ENV DB_NAME=mydatabase
PHP 代码
<?php
$dsn = "mysql:host=$DB_HOST;dbname=$DB_NAME";
$user = $DB_USER;
$password = $DB_PASSWORD;
try {
$conn = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo "Database connection failed: " . $e->getMessage();
}实战案例
假设我们有一个 PHP 项目,需要连接到 MySQL 数据库。数据库容器名为 my-database,PHP 容器名为 my-php。
docker-php-ext-install 安装 PDO MySQL 扩展。成功连接后,PHP 项目能够顺利访问 MySQL 数据库。
以上就是Docker 部署 PHP 项目时数据库连接失败,如何处理?的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号