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

相关推荐
lichenyang45318 小时前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang45318 小时前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang45318 小时前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang45318 小时前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
Patrick_Wilson5 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy6 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭6 天前
运行你的第一个Docker容器
后端·docker·容器
宋均浩7 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
程序员老赵7 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1118 天前
LM Studio Docker 部署——本地大模型一键启动
docker