Docker 安装 PHP
PHP 是一种流行的通用脚本语言,特别适合于 Web 开发。通过 Docker 安装和运行 PHP,我们可以快速搭建开发环境,并确保开发和生产环境的一致性。
1. 安装 PHP 镜像
我们可以通过以下两种方式来安装 PHP:
方法一:使用 docker pull 命令
docker pull php:5.6-fpm
方法二:使用 docker search 命令查找可用版本
docker search php
搜索结果示例
NAME | DESCRIPTION | STARS | OFFICIAL |
---|---|---|---|
php | While designed for web development, the PHP... | 1232 | [OK] |
richarvey/nginx-php-fpm | Container running Nginx + PHP-FPM... | 207 |
版本说明
PHP Docker 镜像提供了多种标签版本:
- latest:最新版本
- fpm:FastCGI Process Manager 版本
- apache:带 Apache 的版本
- alpine:基于 Alpine Linux 的轻量级版本
2. Nginx + PHP 部署
在实际应用中,我们通常需要将 PHP 与 Web 服务器(如 Nginx)配合使用。以下是具体的配置步骤:
启动 PHP-FPM 容器
docker run --name myphp-fpm -v ~/nginx/www:/www -d php:5.6-fpm
参数说明
--name myphp-fpm
:设置容器名称-v ~/nginx/www:/www
: 将主机目录挂载到容器内-d
:后台运行容器
配置 Nginx
创建 Nginx 配置文件目录并添加配置:
mkdir -p ~/nginx/conf/conf.d
创建配置文件 ~/nginx/conf/conf.d/default.conf:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
启动 Nginx 容器
docker run --name sean-php-nginx -p 8083:80 -d \
-v ~/nginx/www:/usr/share/nginx/html:ro \
-v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link myphp-fpm:php \
nginx
配置说明
- 端口 8083 映射到容器的 80 端口
- 挂载本地 HTML 目录到容器
- 挂载本地 Nginx 配置目录到容器
- 通过 --link 连接 PHP-FPM 容器
3. 高级配置:PHP + MySQL + phpMyAdmin
启动 MySQL 容器
# 创建必要的目录
mkdir -p ~/docker/mysql/{data,logs,conf}
# 启动 MySQL 容器
docker run -p 3306:3306 --name mysql-server \
-v ~/docker/mysql/conf:/etc/mysql \
-v ~/docker/mysql/logs:/logs \
-v ~/docker/mysql/data:/mysql_data \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql
启动 phpMyAdmin 容器
docker run --name myadmin -d --link mysql-server:db -p 8080:80 phpmyadmin/phpmyadmin
访问说明
- PHP 应用访问地址:http://localhost:8083
- phpMyAdmin 访问地址:http://localhost:8080
- MySQL 端口:3306
测试 PHP 安装
在 ~/nginx/www 目录下创建 index.php 文件:
<?php
echo phpinfo();
?>