在 Ubuntu 下通过 Docker 部署 Caddy 和 PHP-FPM 服务器

引言

大家好,今天我们要聊的主题是如何在 Ubuntu 上通过 Docker 部署 Caddy 和 PHP-FPM 服务器。Caddy 是一个现代化的 web 服务器,支持 HTTPS,配置简单;而 PHP-FPM 是 PHP 的 FastCGI 进程管理器,能够高效处理 PHP 请求。二者结合,简直是开发者的福音。

Docker、Caddy 和 PHP-FPM 简介

Docker 是一个开源的容器化平台,允许开发者轻松打包、分发和运行应用。通过 Docker,应用及其依赖关系被封装在一个独立的容器中,确保在任何环境下都能顺利运行。

Caddy 是一个强大的 web 服务器,自动为网站提供 HTTPS 支持,配置文件简单易懂,适合快速部署。PHP-FPM 则是优化 PHP 性能的重要工具,通过管理多个 PHP 进程,提高响应速度和并发处理能力。将这两者结合,能够快速搭建出高效、可靠的 web 应用环境。

实验环境配置

这次实验我使用的是阿贝云的免费服务器,配置为 1 核 CPU、1GB 内存和 5M 带宽。这个配置对于小型项目的测试是足够的。

部署步骤

下面是详细的部署步骤和命令:

1. 安装 Docker 和 Docker Compose

确保你的系统是最新的:

复制代码
sudo apt update && sudo apt upgrade -y

安装 Docker:

复制代码
sudo apt install -y docker.io

安装 Docker Compose:

复制代码
sudo apt install -y docker-compose

2. 创建项目目录

复制代码
mkdir -p ~/caddy-php
cd ~/caddy-php

3. 创建 docker-compose.yml 文件

在项目目录下创建 docker-compose.yml 文件,内容如下:

复制代码
version: '3.7'
services:
  caddy:
    image: caddy:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./site:/srv
    networks:
      - webnet

  php:
    image: php:8.0-fpm
    volumes:
      - ./site:/var/www/html
    networks:
      - webnet

networks:
  webnet:

4. 创建 Caddyfile

在项目目录下创建 Caddyfile,配置 Caddy 服务器:

复制代码
your-domain.com {
    root * /srv
    php_fastcgi php:9000
    file_server
    log {
        output stdout
        format json
    }
}

your-domain.com 替换为你的域名。

5. 创建网站目录

创建一个网站目录并添加 index.php 文件:

复制代码
mkdir site
echo "<?php phpinfo(); ?>" > site/index.php

6. 启动 Docker 容器

在项目目录下运行以下命令启动服务:

复制代码
sudo docker-compose up -d

7. 测试访问

打开浏览器,访问 http://your-domain.com,你应该能看到 PHP 信息页面。

结尾

就这样,一个简单的 Caddy 和 PHP-FPM 服务器就部署好了。通过 Docker,整个过程变得无比顺畅。记得根据你的需求调整配置,享受开发的乐趣!如果有任何问题,欢迎留言讨论。

相关推荐
leeyi1 天前
把软件装进不能上网的机房——一套建好了、还没上过战场的交付工程(第101篇)
docker·aigc·agent
YIAN1 天前
Docker + Nginx 核心原理扫盲:从环境隔离到反向代理,运维面试必考点
后端·docker·面试
BreezeJiang1 天前
从域名到 Node.js:一次云服务器请求经过了哪些层?
服务器
IT大白鼠1 天前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
Julien20042 天前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
2601_962074682 天前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
小张同学a.2 天前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器
大模型丫丫2 天前
Hermes Agent:轻量级智能体框架实战指南
大数据·运维·服务器
NJCloud2 天前
Docker 容器技术入门:部署、核心概念与基础命令
运维·docker·容器
mooooooooooye2 天前
2026 年跨平台 SSH 客户端怎么选?Xterminal、Termius、MobaXterm 谁更合适
服务器·网络·ssh