Caddy 直接运行在主机上,反向代理容器中的 php-fpm 服务。这种方式的好处是不需要把 PHP 代码装到容器中也能正常运行。

创建 php-fpm 容器

sudo docker run -d --name php7-fpm \
	-p 9000:9000 \
	-v $PWD/html:/var/www/html \
	--user www-data \
	php:7-fpm

Caddyfile 配置

Caddy 反向代理容器中的 php-fpm 服务,在配置文件中 root 应该填写 php-fpm 容器中映射的路径,即 /var/www/html,可以使用 /var/www/html/public 子目录形式。但要设置成 $PWD/html 是会报错的。

然而,程序代码应该正常放到容器映射的主机路径,即 $PWD/html

test.abc.cn {
    tls abc@gmail.com
    root /var/www/html/public
    index index.php
    fastcgi / 127.0.0.1:9000 php
    rewrite {
        r .*
        ext /
        to /index.php?{query}
    }
}

注意:配置中的 rewrite 规则适用于 Laravel 框架。

参考