跳转到主内容
极星编程网:以代码为星,赴技术山海!

Docker怎么搭建PHP_Docker容器配置PHP环境【教程】

需通过官方镜像或自定义Dockerfile搭建PHP环境:一、用php:8.2-cli快速运行脚本;二、用php:8.2-apache部署Web服务;三、自定义安装扩展如pdo_mysql、gd、opcache;四、用docker-compose集成MySQL等多服务。

如果您希望在Docker中快速构建一个可运行PHP代码的隔离环境,则需要通过编写Dockerfile或使用官方镜像启动容器,并配置必要的扩展与服务依赖。以下是搭建PHP Docker容器的具体操作步骤:

一、使用官方PHP镜像启动容器

PHP官方Docker镜像已预装基础扩展和CLI支持,适合快速验证脚本或搭建简单Web服务。该方式无需手动编译,启动速度快,适用于开发测试场景。

1、在终端执行命令拉取PHP 8.2 CLI版本镜像:dockerpullphp:8.2-cli

2、创建本地目录用于挂载PHP文件,例如:

mkdir -p ~/php-app && cd ~/php-app立即学习“PHP免费学习笔记(深入)

”;

3、在该目录下新建测试文件

index.php

,内容为:

4、运行容器并挂载当前目录到容器内 /var/www/html 路径:docker run --rm -v $(pwd):/var/www/html -w /var/www/html php:8.2-cli php index.php

二、构建带Apache的PHP Web环境

Apache作为Web服务器可直接响应HTTP请求,配合PHP模块实现动态页面解析。此方案适合部署传统PHP项目,如WordPress或Laravel基础站点。

1、新建Dockerfile文件,内容如下:

FROM php:8.2-apache COPY index.php /var/www/html/ EXPOSE 80

2、在同一目录创建

index.php

,内容为:

3、构建镜像:

docker build -t my-php-apache .

4、运行容器并映射主机8080端口:

docker run -d -p 8080:80 --name php-web my-php-apache

5、访问

http://localhost:8080查看phpinfo输出Docker Sandbox创建并管理 Docker 沙箱虚拟机环境以安全执行代理。适用于运行不受信任代码、探索包或隔离代理工作负载。支持 Claude、Codex、Copilot、Gemini 和 Kiro 代理,并提供网络代理控制。

下载

三、自定义Dockerfile安装扩展与依赖

部分PHP项目需启用额外扩展(如pdo_mysql、gd、xdebug),官方镜像默认未启用,需在构建阶段显式安装。该方法确保环境一致性,适用于生产前验证。

1、新建Dockerfile,以php:8.2-cli为基础镜像:FROM php:8.2-cli

2、安装常见扩展及系统依赖:

RUN apt-get update && apt-get install -y \libpng-dev libjpeg-dev libfreetype6-dev \&& docker-php-ext-configure gd --with-freetype --with-jpeg \&& docker-php-ext-install gd pdo_mysql mysqli opcache

3、启用OPcache配置:

RUN echo "opcache.enable=1" > /usr/local/etc/php/conf.d/opcache.ini

4、复制应用代码至容器:

COPY . /app && WORKDIR /app

5、构建并运行:

docker build -t custom-php . && docker run --rm custom-php php -m | grep -E "(pdo|gd|opcache)"

四、使用docker-compose管理多服务PHP环境

当PHP应用依赖MySQL、Redis等外部服务时,单独运行多个容器易导致网络与配置混乱。docker-compose可统一声明服务关系、网络与卷挂载,提升协作效率。

1、新建

docker-compose.yml文件,内容包含php、mysql、nginx三个服务:version: '3.8'services:php:image: php:8.2-cli volumes:- ./src:/app working_dir: /app mysql:image: mysql:8.0 environment:MYSQL_ROOT_PASSWORD: rootpass ports:- "3306:3306"

2、在项目根目录创建

src子目录存放PHP脚本

3、启动全部服务:

docker-compose up -d

4、进入PHP容器执行数据库连接测试:

docker-compose exec php php -r "new mysqli('mysql', 'root', 'rootpass'); echo 'Connected';"

相关文章