目录
使用 Docker 安装 PHP 是一种快速搭建 PHP 开发环境的方法。通过 Docker,可以创建一个隔离的环境来运行 PHP 应用程序,确保在不同机器之间有一致的环境配置。以下是详细的步骤,介绍如何使用 Docker 安装 PHP:
1. 安装 Docker
确保你的系统上已经安装了 Docker 引擎。如果还没有安装,可以从 Docker 官方网站下载并按照指南安装 Docker 引擎。
Ubuntu 示例:
bash
深色版本
1sudo apt update
2sudo apt install docker.io
3sudo systemctl start docker
4sudo systemctl enable docker
2. 拉取 PHP 镜像
PHP 官方提供了多种 Docker 镜像,你可以根据需要选择合适的版本。
示例命令:
bash
深色版本
1docker pull php:8.1-fpm
这将拉取 PHP 8.1 的 FPM(FastCGI Process Manager)版本镜像。FPM 版本通常用于与 Web 服务器(如 Nginx 或 Apache)一起使用。如果你需要其他版本,可以指定相应的标签,例如:
bash
深色版本
1docker pull php:7.4-fpm
3. 创建 Dockerfile
如果你想定制 PHP 环境,可以创建一个 Dockerfile
来构建自定义的 PHP 镜像。
示例 Dockerfile
:
dockerfile
深色版本
1# 使用 PHP 8.1 的 FPM 版本作为基础镜像
2FROM php:8.1-fpm
3
4# 设置工作目录
5WORKDIR /var/www/html
6
7# 安装必要的系统依赖包
8RUN apt-get update && apt-get install -y \
9 libfreetype6-dev \
10 libjpeg62-turbo-dev \
11 libpng-dev \
12 libzip-dev \
13 zip \
14 unzip \
15 git \
16 && docker-php-ext-install -j$(nproc) pdo_mysql mysqli gd zip \
17 && apt-get clean && rm -rf /var/lib/apt/lists/*
18
19# 安装 composer
20RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
21
22# 复制项目文件
23COPY . /var/www/html
24
25# 设置环境变量
26ENV PHP_IDE_CONFIG="serverName=localhost"
27
28# 设置容器启动时执行的命令
29CMD ["php-fpm"]
4. 构建 Docker 镜像
使用 Dockerfile
构建 Docker 镜像。
bash
深色版本
1docker build -t my-php-app .
这将构建一个名为 my-php-app
的 Docker 镜像。请注意,.
表示当前目录是 Dockerfile
所在的位置。
5. 创建并运行 PHP 容器
构建完镜像后,你可以创建并运行一个 Docker 容器。
示例命令:
bash
深色版本
1docker run --name my-php-container -p 9000:9000 -d my-php-app
这里解释一下各个选项的含义:
--name
:指定容器的名字。-p
:端口映射,将容器内的 9000 端口映射到主机的 9000 端口。-d
:以后台模式运行容器。my-php-app
:使用之前构建的镜像。
6. 测试 PHP-FPM
你可以通过 telnet 或 netcat 工具来测试 PHP-FPM 是否正常工作:
bash
深色版本
1echo "<?php phpinfo(); ?>" | nc localhost 9000 > index.php
如果一切正常,你应该能够看到 PHP 信息页面。
7. 配合 Web 服务器使用
通常情况下,PHP-FPM 会与 Web 服务器(如 Nginx 或 Apache)一起使用来处理 PHP 请求。
使用 Nginx 示例:
创建一个 nginx.conf
文件来配置 Nginx:
nginx
深色版本
1server {
2 listen 80;
3 server_name localhost;
4
5 location / {
6 root /var/www/html;
7 index index.html index.htm index.php;
8
9 if (!-e $request_filename){
10 rewrite ^/(.*)$ /index.php last;
11 }
12 }
13
14 location ~ \.php$ {
15 include snippets/fastcgi-php.conf;
16 fastcgi_pass 127.0.0.1:9000;
17 }
18}
然后创建一个 Dockerfile
来构建包含 Nginx 的镜像:
dockerfile
深色版本
1FROM nginx:stable-alpine
2
3COPY nginx.conf /etc/nginx/conf.d/default.conf
4COPY --from=my-php-app /var/www/html /var/www/html
构建 Nginx 镜像:
bash
深色版本
1docker build -t my-php-nginx .
运行 Nginx 容器:
bash
深色版本
1docker run --name my-php-nginx-container -p 80:80 -d my-php-nginx
现在,你可以通过访问 http://localhost
来查看 PHP 应用程序。
8. 管理 Docker 容器
你可以使用以下命令来管理 Docker 容器:
-
查看所有容器:
深色版本
1docker ps
-
查看所有容器(包括已停止的):
深色版本
1docker ps -a
-
启动/停止容器:
深色版本
1docker start my-php-container 2docker stop my-php-container
-
重启容器:
深色版本
1docker restart my-php-container
-
移除容器:
深色版本
1docker rm my-php-container
-
移除所有停止的容器:
深色版本
1docker rm $(docker ps -a -q)
9. 使用 Docker Compose
如果你有多个服务需要一起管理,可以使用 Docker Compose 来简化服务编排。
创建 docker-compose.yml
文件:
yaml
深色版本
1version: '3.8'
2
3services:
4 php:
5 build:
6 context: .
7 dockerfile: Dockerfile-php
8 volumes:
9 - .:/var/www/html
10 ports:
11 - "9000:9000"
12 nginx:
13 build:
14 context: .
15 dockerfile: Dockerfile-nginx
16 depends_on:
17 - php
18 ports:
19 - "80:80"
创建 Dockerfile-php
:
dockerfile
深色版本
1FROM php:8.1-fpm
2
3# 安装必要的系统依赖包...
4# (与前面的 Dockerfile 相同的部分)
5
6# 设置环境变量
7ENV PHP_IDE_CONFIG="serverName=localhost"
8
9# 设置容器启动时执行的命令
10CMD ["php-fpm"]
创建 Dockerfile-nginx
:
dockerfile
深色版本
1FROM nginx:stable-alpine
2
3COPY nginx.conf /etc/nginx/conf.d/default.conf
4COPY --from=php /var/www/html /var/www/html
运行服务:
bash
深色版本
1docker-compose up -d
总结
通过上述步骤,你可以使用 Docker 快速搭建和管理 PHP 开发环境。这种方法的优点在于它可以提供一致的环境,无论是在开发还是生产环境中,都可以通过相同的 Docker 配置来部署 PHP 应用程序。此外,使用 Docker 还可以轻松地进行数据持久化、日志管理等工作。