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进行配置和扩展,以满足各种应用场景的需求。希望这篇博客对你有所帮助!如果你有任何问题或建议,请随时在评论区留言。

相关推荐
阿里云云原生16 分钟前
如何使用通义灵码完成PHP单元测试 - AI辅助开发教程
php
全镇人的希望42 分钟前
[特殊字符] 企业级Docker私有仓库实战:3步搭建Harbor安全仓库,镜像管理从此高效无忧
docker·运维开发·私有化
穷儒公羊2 小时前
第一部分——Docker篇 第三章 构建自定义镜像
java·运维·后端·学习·docker·云原生·容器
weixin_428498492 小时前
Docker 容器内运行程序的性能开销
docker·容器
forestsea3 小时前
Docker 是什么? Docker 基本观念介绍与容器和虚拟机的比较
docker·云原生
Gold Steps.4 小时前
基于Kubeadm实现K8S集群扩缩容指南
运维·容器·k8s
API小爬虫6 小时前
利用 PHP 爬虫获取京东商品详情 API 返回值说明及代码示例
android·爬虫·php
冯浩(grow up)15 小时前
macOS可视化桌面配置docker加速器
macos·docker·容器
Micheal_Dad15 小时前
在macOS的docker中如何安装及运行ROS2
macos·docker
wniuniu_16 小时前
Pow工作量证明是啥
开发语言·区块链·php