<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Caddy on Tuan's Blog</title><link>https://blog.cloudorz.com/tags/caddy/</link><description>Recent content in Caddy on Tuan's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>mt</copyright><lastBuildDate>Sun, 01 Nov 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://blog.cloudorz.com/tags/caddy/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 Docker 定制化自己博客基础环境</title><link>https://blog.cloudorz.com/p/use-docker-depoly-your-website/</link><pubDate>Tue, 31 Oct 2023 15:20:39 +0800</pubDate><guid>https://blog.cloudorz.com/p/use-docker-depoly-your-website/</guid><description>&lt;img src="https://blog.cloudorz.com/p/use-docker-depoly-your-website/cover.svg" alt="Featured image of post 使用 Docker 定制化自己博客基础环境" /&gt;&lt;h2 id="前言"&gt;前言&#10;&lt;/h2&gt;&lt;p&gt;本文主要介绍为什么选用 &lt;code&gt;docker&lt;/code&gt; 和 &lt;code&gt;docker-compose&lt;/code&gt; 作为搭建本站的基础环境，以及具体的搭建方法，给建站初学者提供一些思路。&lt;/p&gt;&#10;&lt;h2 id="起因"&gt;起因&#10;&lt;/h2&gt;&lt;p&gt;最初是为了解决环境的问题。从 5 年前野路子学来的 &lt;code&gt;lnmp.org&lt;/code&gt; 一键搭建（目前似乎已经被收购？），到宝塔面板一键部署环境，似乎（不是）都是一个&lt;del&gt;很好&lt;/del&gt;的选择。毕竟都是人家已经写好的嘛 = =，可供自己定制化发挥的空间太小。你所使用的功能，都是他们已经高度 &lt;code&gt;集成化&lt;/code&gt;、&lt;code&gt;模块化&lt;/code&gt;、&lt;code&gt;一键化&lt;/code&gt;、&lt;code&gt;懒人化&lt;/code&gt; 的。况且他们的产品定位大多是服务于政企网站，实现低运维的愿景。这与个人博客 &lt;code&gt;技术选型激进性&lt;/code&gt;、&lt;code&gt;高可折腾性&lt;/code&gt; 的目标背道而驰 XD。So，自己动手，丰衣足食！&lt;/p&gt;&#10;&lt;h2 id="实现目标"&gt;实现目标&#10;&lt;/h2&gt;&lt;p&gt;用于快速构建常用开发语言所需要的运行时或开发环境（基于服务），并且能 &lt;code&gt;统一管理&lt;/code&gt; 各服务的状态，&lt;code&gt;轻量化&lt;/code&gt; 配置服务，&lt;code&gt;简化&lt;/code&gt; 数据备份流程，&lt;code&gt;方便&lt;/code&gt; 本地调试及 &lt;code&gt;跨平台&lt;/code&gt; 迁移、部署。&lt;/p&gt;&#10;&lt;p&gt;已实现的服务：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Nginx / Caddy：Web 服务器&lt;/li&gt;&#10;&lt;li&gt;PHP（Only FPM）：世界上最好的语言（确信）&lt;/li&gt;&#10;&lt;li&gt;MySQL：数据库&lt;/li&gt;&#10;&lt;li&gt;Redis：缓存&lt;/li&gt;&#10;&lt;li&gt;Gitea：代码托管&lt;/li&gt;&#10;&lt;li&gt;Portainer：Docker 管理工具&lt;/li&gt;&#10;&lt;li&gt;phpMyAdmin：数据库管理工具&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;整体结构大概是这样：&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="整体架构" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.cloudorz.com/p/use-docker-depoly-your-website/architecture.svg"&gt;&lt;/p&gt;&#10;&lt;h2 id="工具介绍及其安装"&gt;工具介绍及其安装&#10;&lt;/h2&gt;&lt;p&gt;为什么使用 Docker 及 Docker Compose？在开始之前，先介绍一下这两个概念。&lt;/p&gt;&#10;&lt;h3 id="什么是-docker"&gt;什么是 Docker？&#10;&lt;/h3&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;容器是在主机上运行的沙盒进程，与该主机上运行的所有其他进程隔离。这种隔离利用了内核命名空间（namespace）和 cgroup，这些功能在 Linux 中已经存在很长时间了。Docker 使这些功能变得平易近人且易于使用。总而言之，容器：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;是镜像的可运行实例。您可以使用 Docker API 或 CLI 创建、启动、停止、移动或删除容器。&lt;/li&gt;&#10;&lt;li&gt;可以在本地机、虚拟机上运行，也可以部署到云端。&lt;/li&gt;&#10;&lt;li&gt;是可移植的（并且可以在任何操作系统上运行）。&lt;/li&gt;&#10;&lt;li&gt;与其他容器隔离，并运行自己的软件、二进制文件、配置等。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;如果您熟悉 chroot，那么可以将容器视为 chroot 的扩展版本。文件系统来自镜像。然而，容器增加了使用 chroot 时不可用的额外隔离。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;—— 来自 &lt;a class="link" href="https://docs.docker.com/get-started/#what-is-a-container" target="_blank" rel="noopener"&#10; &gt;Docker 官方文档&lt;/a&gt;&lt;/p&gt;&#10;&lt;h3 id="什么是-docker-compose"&gt;什么是 Docker Compose？&#10;&lt;/h3&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;Docker Compose 是一个帮助您定义和共享多容器应用程序的工具。使用 Compose，您可以创建一个 YAML 文件来定义服务，并且使用单个命令就可以启动或拆除所有内容。&lt;/p&gt;&#10;&lt;p&gt;使用 Compose 的一大优点是您可以在文件中定义应用程序堆栈，将其保存在项目存储库的根目录中（现在是版本控制的），并轻松地让其他人为您的项目做出贡献。有人只需要克隆您的存储库并使用 Compose 启动应用程序。事实上，您现在可能会在 GitHub / GitLab 上看到不少项目正是这样做的。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;—— 来自 &lt;a class="link" href="https://docs.docker.com/get-started/08_using_compose/" target="_blank" rel="noopener"&#10; &gt;Docker 官方文档&lt;/a&gt;&lt;/p&gt;&#10;&lt;h3 id="docker-的安装"&gt;Docker 的安装&#10;&lt;/h3&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;安装的详细说明可参考 &lt;a class="link" href="https://docs.docker.com/get-docker/" target="_blank" rel="noopener"&#10; &gt;官方文档&lt;/a&gt;。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;快速安装：安装前确保已经卸载了旧版本的 Docker，且假定操作系统为 Ubuntu / Debian / CentOS。&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;Tips：鉴于国内网络环境，如果遇到下载缓慢的问题，可以使用国内镜像源安装 Docker，例如 &lt;a class="link" href="https://mirrors.bfsu.edu.cn/help/docker-ce/" target="_blank" rel="noopener"&#10; &gt;北京外国语大学的镜像源&lt;/a&gt;。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 可选，设置镜像源&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;DOWNLOAD_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://mirrors.bfsu.edu.cn/docker-ce&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 如您使用 curl&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://get.docker.com/ &lt;span class="p"&gt;|&lt;/span&gt; sudo -E sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 如您使用 wget&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -O- https://get.docker.com/ &lt;span class="p"&gt;|&lt;/span&gt; sudo -E sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h3 id="docker-compose-的安装"&gt;Docker Compose 的安装&#10;&lt;/h3&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;可参考 &lt;a class="link" href="https://docs.docker.com/compose/install/" target="_blank" rel="noopener"&#10; &gt;Docker Compose 安装 - 官方文档&lt;/a&gt;。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;用上面的 &lt;code&gt;get.docker.com&lt;/code&gt; 脚本安装 Docker 时，会一并装好 Compose V2 插件（&lt;code&gt;docker-compose-plugin&lt;/code&gt;），用 &lt;code&gt;docker compose&lt;/code&gt;（中间是空格）调用，一般不需要再单独安装：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose version&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;如果你更习惯旧的独立版 &lt;code&gt;docker-compose&lt;/code&gt; 命令，也可以用包管理器安装：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Ubuntu/Debian&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install docker-compose&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CentOS&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install docker-compose&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;注意：独立版 &lt;code&gt;docker-compose&lt;/code&gt;（Compose V1）已经停止维护，新环境推荐直接用 &lt;code&gt;docker compose&lt;/code&gt;。下文的 &lt;code&gt;docker-compose xxx&lt;/code&gt; 命令都可以等价写成 &lt;code&gt;docker compose xxx&lt;/code&gt;。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h2 id="使用-docker-compose-构建基础环境"&gt;使用 docker-compose 构建基础环境&#10;&lt;/h2&gt;&lt;p&gt;下面开始介绍如何使用 docker-compose 构建基础环境。&lt;/p&gt;&#10;&lt;h3 id="代码拉取"&gt;代码拉取&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://git.cloudorz.com/mt/server.git --depth&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h3 id="服务配置"&gt;服务配置&#10;&lt;/h3&gt;&lt;p&gt;这里需要修改一些服务的配置文件，以 &lt;code&gt;Caddy&lt;/code&gt; 为例。Caddy 的配置文件是 &lt;code&gt;Caddyfile&lt;/code&gt;，一个把站点交给 PHP-FPM 处理的最小示例如下（仅作示意，文件位置、站点目录以仓库里的实际配置为准）：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;example.com {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; root * /var/www/html&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; php_fastcgi php-fpm-82:9000&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; file_server&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;example.com&lt;/code&gt; 换成你自己的域名，Caddy 会自动申请和续期 HTTPS 证书；&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;php_fastcgi&lt;/code&gt; 后面写的是 PHP-FPM 容器的&lt;strong&gt;服务名&lt;/strong&gt;和端口。同一个 Compose 项目里的容器默认在同一个网络中，可以直接用服务名互相访问，同理 PHP 连接 MySQL 时主机名填 &lt;code&gt;mysql&lt;/code&gt; 即可；&lt;/li&gt;&#10;&lt;li&gt;Caddy 把脚本的绝对路径传给 PHP-FPM，所以两个容器要挂载同一个宿主机目录，并且容器内的路径保持一致（这里都是 &lt;code&gt;/var/www/html&lt;/code&gt;）。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="启动服务"&gt;启动服务&#10;&lt;/h3&gt;&lt;p&gt;按需启动服务，这里以启动 &lt;code&gt;Caddy&lt;/code&gt; + &lt;code&gt;PHP&lt;/code&gt; + &lt;code&gt;MySQL&lt;/code&gt; + &lt;code&gt;phpMyAdmin&lt;/code&gt; 为例：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose up -d caddy php-fpm-82 mysql phpmyadmin&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;随后查看服务状态：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose ps&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;各服务的 &lt;code&gt;STATUS&lt;/code&gt; 显示为 &lt;code&gt;Up&lt;/code&gt; 就说明启动成功了：&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="启动与查看状态" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.cloudorz.com/p/use-docker-depoly-your-website/compose-terminal.svg"&gt;&lt;/p&gt;&#10;&lt;h3 id="常用命令"&gt;常用命令&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查看某个服务的日志&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose logs -f caddy&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 修改配置后重启某个服务&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose restart caddy&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 停止并删除所有容器（数据卷 / 挂载目录里的数据会保留）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose down&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="参考"&gt;参考&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://docs.docker.com/" target="_blank" rel="noopener"&#10; &gt;Docker 官方文档&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://docs.docker.com/compose/" target="_blank" rel="noopener"&#10; &gt;Docker Compose 官方文档&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://caddyserver.com/docs/caddyfile/directives/php_fastcgi" target="_blank" rel="noopener"&#10; &gt;Caddy 文档：php_fastcgi&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item></channel></rss>