root@lotro:/home# cat docker-compose.yml
services:
caddy:
image: caddy:2-alpine
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp" # http3 支持(可选)
volumes:
- /home/caddy/Caddyfile:/etc/caddy/Caddyfile
- /home/caddy/data:/data
- /home/caddy/config:/config
- /home/wwwroot:/srv:ro # 全部网站放在这里(只读更安全)
networks:
- wp-net
wordpress:
image: wordpress:php8.3-fpm-alpine # 2025-2026 推荐使用 php8.3 或更高
container_name: wp-lotro
restart: unless-stopped
depends_on:
- db
volumes:
- /home/wwwroot/lotro.cc:/var/www/html
networks:
- wp-net
db:
image: mysql:8.0
container_name: mysql-lotro
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root密码
MYSQL_DATABASE: 数据库名
MYSQL_USER: 用户名
MYSQL_PASSWORD: 密码
volumes:
- /home/mysql:/var/lib/mysql
networks:
- wp-net
networks:
wp-net:
driver: bridge
root@lotro:/home# cat caddy/Caddyfile
lotro.cc, www.lotro.cc {
tls lotro@live.cn
root * /srv/lotro.cc
php_fastcgi wordpress:9000 {
root /var/www/html
env PATH_INFO {path}
dial_timeout 5s
read_timeout 360s
write_timeout 360s
}
# 静态文件直接 serve(php_fastcgi 已经处理了大部分 rewrite)
file_server
# 压缩
encode zstd gzip
# 安全响应头(推荐)
header {
X-Frame-Options SAMEORIGIN
X-Content-Type-Options nosniff
Strict-Transport-Security "max-age=31536000;"
Referrer-Policy strict-origin-when-cross-origin
-Server
}
}
# 停掉 mysql 容器
docker compose down
# 修改目录所有者
chown -R 999:999 /home/mysql
chown -R 82:82 /home/wwwroot/lotro.cc
# 目录权限
find /home/mysql -type d -exec chmod 750 {} \;
find /home/mysql -type f -exec chmod 640 {} \;
# 再启动
docker compose up -d