Docker介绍(十四)-- Docker 安装 PHP

目录

1. 安装 Docker

Ubuntu 示例:

2. 拉取 PHP 镜像

示例命令:

3. 创建 Dockerfile

示例 Dockerfile:

4. 构建 Docker 镜像

5. 创建并运行 PHP 容器

示例命令:

6. 测试 PHP-FPM

7. 配合 Web 服务器使用

使用 Nginx 示例:

8. 管理 Docker 容器

9. 使用 Docker Compose

创建 docker-compose.yml 文件:

创建 Dockerfile-php:

创建 Dockerfile-nginx:

运行服务:

总结


 

使用 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 容器:

  • 查看所有容器:

     
    bash

    深色版本

    1docker ps
  • 查看所有容器(包括已停止的):

     
    bash

    深色版本

    1docker ps -a
  • 启动/停止容器:

     
    bash

    深色版本

    1docker start my-php-container
    2docker stop my-php-container
  • 重启容器:

     
    bash

    深色版本

    1docker restart my-php-container
  • 移除容器:

     
    bash

    深色版本

    1docker rm my-php-container
  • 移除所有停止的容器:

     
    bash

    深色版本

    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 还可以轻松地进行数据持久化、日志管理等工作。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蘑菇二号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值