Docker Compose实战三:轻松部署PHP

通过前面的文章(Docker Compose基础语法与MySQL部署),你已经掌握了Docker Compose的基本语法和常用指令,并成功部署了一个MySQL数据库服务器。今天,我们将继续深入探索Docker Compose的强大功能,介绍如何使用它来部署PHP环境。PHP作为一种广泛使用的开源脚本语言,尤其适用于Web开发,并且与MySQL等数据库系统的集成非常便捷。本文将为你提供一个简单而高效的PHP部署解决方案。

一、环境准备

在开始之前,请确保你已经安装了Docker和Docker Compose。如果还没有安装,你可以访问Docker的官方网站下载并安装适用于你操作系统的版本。

二、创建项目目录

接下来,我们需要创建一个项目目录来存放相关的配置文件和代码。你可以使用以下命令来创建目录并进入其中:

bash 复制代码
mkdir -p /zzj/mydockercompose/phptry
cd /zzj/mydockercompose/phptry
mkdir -p ./nginx/{conf,log}
mkdir  ./www 


三、编写docker-compose.yml文件

在项目目录中,我们需要创建一个名为docker-compose.yml的文件。这个文件将定义我们的服务、网络、卷等配置。以下是一个基本的docker-compose.yml文件示例,用于部署PHP环境:

yaml 复制代码
version: "3.9"  # 指定docker-compose文件使用的版本

services:  # 定义服务
  # 定义名为php的服务
  php:
    image: php:7.4-fpm  # 使用官方的php镜像,版本为7.4-fpm
    container_name: php-fpm  # 设置容器的名称为php-fpm
    volumes:  # 挂载卷
      - /zzj/mydockercompose/phptry/www:/www  # 将宿主机的/zzj/mydockercompose/phptry/www目录挂载到容器的/www目录
    ports:  # 端口映射
      - "9000:9000"  # 将宿主机的9000端口映射到容器的9000端口,用于PHP-FPM的通信
    restart: always  # 设置容器总是重启,除非被手动停止

  # 定义名为nginx的服务
  nginx:
    image: nginx  # 使用官方的nginx镜像
    container_name: my_nginx  # 设置容器的名称为my_nginx
    depends_on:  # 指定nginx服务依赖于php服务,确保php服务先启动(注意:这仅控制启动顺序,不保证服务可用性)
      - php
    links:  # 创建一个到php服务的链接(在现代Docker中,这通常不是必需的,因为服务可以通过网络名进行通信)
      - php
    volumes:  # 挂载卷
      - /zzj/mydockercompose/phptry/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf  # nginx配置文件
      - /zzj/mydockercompose/phptry/nginx/log:/var/log/nginx  # nginx日志目录
      - /zzj/mydockercompose/phptry/www:/usr/share/nginx/html  # 网站根目录,与php容器共享
    ports:  # 端口映射
      - "8080:80"  # 将宿主机的8080端口映射到容器的80端口,用于HTTP通信
    restart: always  # 设置容器总是重启,除非被手动停止

四、编写Nginx配置文件

接下来,我们需要在项目目录中编写一个Nginx的配置文件。

bash 复制代码
vim ./nginx/conf/default.conf

以下是一个简单的Nginx配置文件示例:

nginx 复制代码
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    location ~ \.php$ {
        fastcgi_pass   php-fpm:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;
        include        fastcgi_params;
    }
}

五、启动服务

现在,我们已经准备好了所有的配置文件和代码。接下来,我们可以使用Docker Compose来启动服务。在项目目录中运行以下命令:

bash 复制代码
docker compose up -d

这个命令将在后台启动并运行PHP和Nginx容器。

你可以使用docker compose ps命令来查看容器的运行状态,这里就不做演示了。

六、验证部署

最后,我们需要验证PHP是否已经成功部署并正在运行。打开你的浏览器,访问http://localhost:8080,你应该会看到Nginx的默认欢迎页面。然后,你可以在www/index.php中创建一个简单的PHP脚本,内容如下:

php 复制代码
<?php
echo "hello!php";
echo phpinfo();
?>

刷新浏览器并访问http://localhost:8080,你应该会看到PHP的配置信息页面。如下:

七、停止并删除服务

当你不再需要PHP和Nginx容器时,你可以使用以下命令来停止并删除它们:

bash 复制代码
docker-compose stop
docker-compose down -v

八、总结

通过本文的介绍,你已经学会了如何使用Docker Compose部署PHP环境。这种方法不仅简单易懂,而且非常灵活和强大。你可以根据自己的需求对PHP进行配置和扩展,以满足各种应用场景的需求。希望这篇博客对你有所帮助!如果你有任何问题或建议,请随时在评论区留言。

相关推荐
ldj20201 小时前
Docker的docker-compose类比Spring的ApplicationContext
spring·docker
ldj20201 小时前
docker 自定义网桥作用
docker·容器
java叶新东老师1 小时前
k8s常用命令
云原生·容器·kubernetes
土豆丶杨3 小时前
centos 配置docker
docker·eureka·centos
杰哥的狗3 小时前
nacos连接失败,启动失败常见问题
linux·docker
DarkAthena4 小时前
【GaussDB】构建一个GaussDB的Docker镜像
数据库·docker·gaussdb
张火火isgudi8 小时前
CentOS8 使用 Docker 搭建 Jellyfin 家庭影音服务器
服务器·docker·容器
qq_447705319 小时前
宝塔通过docker部署JupyterHub指南【常见错误处理】
运维·docker·容器
tanxiaomi9 小时前
docker 从主机复制文件到容器外进行编辑
运维·docker·容器
hzulwy10 小时前
docker与k8s的容器数据卷
docker·eureka·kubernetes