
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个生产就绪的WordPress Docker镜像,由FrankenPHP、Caddy Web服务器和Souin/Badger高级HTTP缓存驱动,旨在提供高性能WordPress托管服务,内置安全加固和现代Web标准支持。
bashdocker run -d \ --name wordpress \ -p 80:80 \ -e WORDPRESS_DB_HOST=mysql:3306 \ -e WORDPRESS_DB_USER=wordpress \ -e WORDPRESS_DB_PASSWORD=secret \ -e WORDPRESS_DB_NAME=wordpress \ -v wp_data:/var/www/html \ docker.xuanyuan.run/fargot132/franken-press:latest
yamlservices: wordpress: image: docker.xuanyuan.run/fargot132/franken-press:latest ports: - "80:80" environment: WORDPRESS_DB_HOST: mysql:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: secret WORDPRESS_DB_NAME: wordpress CACHE_TTL: 1h CACHE_STALE: 24h FORCE_HTTPS: 0 volumes: - wp_data:/var/www/html - cache_data:/var/cache/badger depends_on: - mysql mysql: image: docker.xuanyuan.run/mysql:8.0 environment: MYSQL_ROOT_PASSWORD: rootsecret MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: secret volumes: - db_data:/var/lib/mysql volumes: wp_data: cache_data: db_data:
WORDPRESS_DB_HOST:数据库主机和端口(默认:mysql)WORDPRESS_DB_NAME:数据库名称(默认:wordpress)WORDPRESS_DB_USER:数据库用户名WORDPRESS_DB_PASSWORD:数据库密码WORDPRESS_DB_CHARSET:数据库字符集(默认:utf8mb4)WORDPRESS_DB_COLLATE:数据库排序规则(默认:空)在https://api.wordpress.org/secret-key/1.1/salt/%E7%94%9F%E6%88%90%E5%AF%86%E9%92%A5%EF%BC%9A
WORDPRESS_AUTH_KEY、WORDPRESS_SECURE_AUTH_KEY、WORDPRESS_LOGGED_IN_KEY、WORDPRESS_NONCE_KEYWORDPRESS_AUTH_SALT、WORDPRESS_SECURE_AUTH_SALT、WORDPRESS_LOGGED_IN_SALT、WORDPRESS_NONCE_SALTWORDPRESS_TABLE_PREFIX:数据库表前缀(默认:wp_)WORDPRESS_DEBUG:启用调试模式(默认:false)WORDPRESS_CONFIG_EXTRA:额外PHP配置代码WORDPRESS_DISABLE_WP_CRON:禁用WordPress内部定时任务(默认:false)FORCE_HTTPS:强制WordPress使用HTTPS(默认:0)CACHE_TTL:缓存有效期(默认:1h)CACHE_STALE: stale缓存时长(默认:24h)CACHE_EXTRA_CONFIG:额外Souin缓存配置CACHE_EXTRA_MATCHES:额外缓存匹配规则BADGER_EXTRA_CONFIG:Badger数据库配置内存受限环境示例:
yamlBADGER_EXTRA_CONFIG: | MemTableSize 16777216 NumMemtables 3 BlockCacheSize 52428800 IndexCacheSize 52428800 ValueThreshold 1048576
SERVER_NAME:服务器主机名和端口(默认:localhost)CADDY_GLOBAL_OPTIONS:全局Caddy配置块CADDY_EXTRA_CONFIG:额外顶级Caddy配置CADDY_SERVER_EXTRA_DIRECTIVES:额外服务器指令FRANKENPHP_CONFIG:FrankenPHP特定配置与https://github.com/nginx-proxy/nginx-proxy%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8%E6%97%B6%EF%BC%9A
VIRTUAL_HOST:nginx-proxy路由的域名LETSENCRYPT_HOST:Let's Encrypt SSL域名(需acme-companion)yamlservices: wp: image: docker.xuanyuan.run/fargot132/franken-press:latest expose: - 80 environment: SERVER_NAME: ${SERVER_NAME}:80 CADDY_GLOBAL_OPTIONS: | auto_https off BADGER_EXTRA_CONFIG: | MemTableSize 16777216 NumMemtables 3 BlockCacheSize 52428800 IndexCacheSize 52428800 ValueThreshold 1048576 WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: ${MYSQL_USER} WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD} WORDPRESS_DB_NAME: ${MYSQL_DATABASE} WORDPRESS_TABLE_PREFIX: ${WORDPRESS_TABLE_PREFIX:-wp_} WORDPRESS_DEBUG: ${WORDPRESS_DEBUG:-0} WORDPRESS_DISABLE_WP_CRON: true VIRTUAL_HOST: ${SERVER_NAME} LETSENCRYPT_HOST: ${SERVER_NAME} volumes: - wordpress:/var/www/html - badger_cache:/var/cache/badger restart: unless-stopped networks: - nginx-proxy - default depends_on: - db db: image: docker.xuanyuan.run/mariadb:10.5 command: --max_allowed_packet=268435456 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} volumes: - db:/var/lib/mysql restart: unless-stopped volumes: wordpress: db: badger_cache: networks: nginx-proxy: external: true
bashCOMPOSE_PROJECT_NAME=mywebsite SERVER_NAME=example.com MYSQL_ROOT_PASSWORD=secure_root_password MYSQL_DATABASE=wordpress MYSQL_USER=wordpress MYSQL_PASSWORD=secure_password WORDPRESS_TABLE_PREFIX=wp_ WORDPRESS_DEBUG=0
HIT:内容来自缓存MISS:内容来自WordPress内置warmup-cache脚本通过XML解析预热站点地图缓存:
bash# 基础用法 docker exec wordpress warmup-cache https://yoursite.com/sitemap.xml # 详细输出 docker exec wordpress warmup-cache https://yoursite.com/sitemap.xml --verbose # 自定义批量大小 docker exec wordpress warmup-cache https://yoursite.com/sitemap.xml --batch-size=200 # 显示帮助 docker exec wordpress warmup-cache --help
Souin提供REST API用于手动缓存失效,内容变更时需调用API:
| 方法 | 端点 | 头部 | 描述 |
|---|---|---|---|
GET | /souin-api/souin | - | 列出存储的缓存键 |
GET | /souin-api/souin/surrogate_keys | - | 列出代理键 |
PURGE | /souin-api/souin/{id or regexp} | - | 按键/正则表达式清除(使用`# FrankenPress - 基于FrankenPHP和HTTP缓存的WordPress镜像 |
一个生产就绪的WordPress Docker镜像,由FrankenPHP、Caddy Web服务器和Souin/Badger高级HTTP缓存驱动,旨在提供高性能WordPress托管服务,内置安全加固和现代Web标准支持。
bashdocker run -d \ --name wordpress \ -p 80:80 \ -e WORDPRESS_DB_HOST=mysql:3306 \ -e WORDPRESS_DB_USER=wordpress \ -e WORDPRESS_DB_PASSWORD=secret \ -e WORDPRESS_DB_NAME=wordpress \ -v wp_data:/var/www/html \ docker.xuanyuan.run/fargot132/franken-press:latest
yamlservices: wordpress: image: docker.xuanyuan.run/fargot132/franken-press:latest ports: - "80:80" environment: WORDPRESS_DB_HOST: mysql:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: secret WORDPRESS_DB_NAME: wordpress CACHE_TTL: 1h CACHE_STALE: 24h FORCE_HTTPS: 0 volumes: - wp_data:/var/www/html - cache_data:/var/cache/badger depends_on: - mysql mysql: image: docker.xuanyuan.run/mysql:8.0 environment: MYSQL_ROOT_PASSWORD: rootsecret MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: secret volumes: - db_data:/var/lib/mysql volumes: wp_data: cache_data: db_data:
WORDPRESS_DB_HOST:数据库主机和端口(默认:mysql)WORDPRESS_DB_NAME:数据库名称(默认:wordpress)WORDPRESS_DB_USER:数据库用户名WORDPRESS_DB_PASSWORD:数据库密码WORDPRESS_DB_CHARSET:数据库字符集(默认:utf8mb4)WORDPRESS_DB_COLLATE:数据库排序规则(默认:空)在https://api.wordpress.org/secret-key/1.1/salt/%E7%94%9F%E6%88%90%E5%AF%86%E9%92%A5%EF%BC%9A
WORDPRESS_AUTH_KEY、WORDPRESS_SECURE_AUTH_KEY、WORDPRESS_LOGGED_IN_KEY、WORDPRESS_NONCE_KEYWORDPRESS_AUTH_SALT、WORDPRESS_SECURE_AUTH_SALT、WORDPRESS_LOGGED_IN_SALT、WORDPRESS_NONCE_SALTWORDPRESS_TABLE_PREFIX:数据库表前缀(默认:wp_)WORDPRESS_DEBUG:启用调试模式(默认:false)WORDPRESS_CONFIG_EXTRA:额外PHP配置代码WORDPRESS_DISABLE_WP_CRON:禁用WordPress内部定时任务(默认:false)FORCE_HTTPS:强制WordPress使用HTTPS(默认:0)CACHE_TTL:缓存有效期(默认:1h)CACHE_STALE: stale缓存时长(默认:24h)CACHE_EXTRA_CONFIG:额外Souin缓存配置CACHE_EXTRA_MATCHES:额外缓存匹配规则BADGER_EXTRA_CONFIG:Badger数据库配置内存受限环境示例:
yamlBADGER_EXTRA_CONFIG: | MemTableSize 16777216 NumMemtables 3 BlockCacheSize 52428800 IndexCacheSize 52428800 ValueThreshold 1048576
SERVER_NAME:服务器主机名和端口(默认:localhost)CADDY_GLOBAL_OPTIONS:全局Caddy配置块CADDY_EXTRA_CONFIG:额外顶级Caddy配置CADDY_SERVER_EXTRA_DIRECTIVES:额外服务器指令FRANKENPHP_CONFIG:FrankenPHP特定配置与https://github.com/nginx-proxy/nginx-proxy%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8%E6%97%B6%EF%BC%9A
VIRTUAL_HOST:nginx-proxy路由的域名LETSENCRYPT_HOST:Let's Encrypt SSL域名(需acme-companion)yamlservices: wp: image: docker.xuanyuan.run/fargot132/franken-press:latest expose: - 80 environment: SERVER_NAME: ${SERVER_NAME}:80 CADDY_GLOBAL_OPTIONS: | auto_https off BADGER_EXTRA_CONFIG: | MemTableSize 16777216 NumMemtables 3 BlockCacheSize 52428800 IndexCacheSize 52428800 ValueThreshold 1048576 WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: ${MYSQL_USER} WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD} WORDPRESS_DB_NAME: ${MYSQL_DATABASE} WORDPRESS_TABLE_PREFIX: ${WORDPRESS_TABLE_PREFIX:-wp_} WORDPRESS_DEBUG: ${WORDPRESS_DEBUG:-0} WORDPRESS_DISABLE_WP_CRON: true VIRTUAL_HOST: ${SERVER_NAME} LETSENCRYPT_HOST: ${SERVER_NAME} volumes: - wordpress:/var/www/html - badger_cache:/var/cache/badger restart: unless-stopped networks: - nginx-proxy - default depends_on: - db db: image: docker.xuanyuan.run/mariadb:10.5 command: --max_allowed_packet=268435456 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} volumes: - db:/var/lib/mysql restart: unless-stopped volumes: wordpress: db: badger_cache: networks: nginx-proxy: external: true
bashCOMPOSE_PROJECT_NAME=mywebsite SERVER_NAME=example.com MYSQL_ROOT_PASSWORD=secure_root_password MYSQL_DATABASE=wordpress MYSQL_USER=wordpress MYSQL_PASSWORD=secure_password WORDPRESS_TABLE_PREFIX=wp_ WORDPRESS_DEBUG=0
HIT:内容来自缓存MISS:内容来自WordPress内置warmup-cache脚本通过XML解析预热站点地图缓存:
bash# 基础用法 docker exec wordpress warmup-cache https://yoursite.com/sitemap.xml # 详细输出 docker exec wordpress warmup-cache https://yoursite.com/sitemap.xml --verbose # 自定义批量大小 docker exec wordpress warmup-cache https://yoursite.com/sitemap.xml --batch-size=200 # 显示帮助 docker exec wordpress warmup-cache --help
Souin提供REST API用于手动缓存失效,内容变更时需调用API:
| 方法 | 端点 | 头部 | 描述 |
|---|---|---|---|
GET | /souin-api/souin | - | 列出存储的缓存键 |
GET | /souin-api/souin/surrogate_keys | - | 列出代理键 |
PURGE | /souin-api/souin/{id or regexp} | - | 按键/正则表达式清除(使用表示精确匹配) |
PURGE | /souin-api/souin | Surrogate-Key: key1, key2 | 按代理键清除 |
PURGE | /souin-api/souin/flush | - | 清除所有缓存 |
bash# 列出缓存键 curl http://localhost/souin-api/souin # 清除特定键 curl -XPURGE http://localhost/souin-api/souin/GET-localhost-/page$ # 按正则表达式清除 curl -XPURGE http://localhost/souin-api/souin/GET-localhost-/blog # 按代理键清除 curl -XPURGE http://localhost/souin-api/souin -H "Surrogate-Key: article-123" # 清除所有缓存 curl -XPURGE http://localhost/souin-api/souin/flush
php<?php // 文章保存时失效缓存 add_action('save_post', function($post_id) { $url = get_permalink($post_id); $cache_key = 'GET-' . parse_url($url, PHP_URL_HOST) . '-' . parse_url($url, PHP_URL_PATH) . ' ## WebP图片支持 安装**EWWW Image Optimizer**插件实现自动WebP转换: ```bash docker exec wordpress wp plugin install ewww-image-optimizer --activate --allow-root
在插件设置中启用"WebP转换",Caddy会自动向兼容浏览器提供WebP格式。
bash# 安装插件 docker exec wordpress wp plugin install akismet --activate --allow-root # 更新WordPress docker exec wordpress wp core update --allow-root # 清除WordPress对象缓存 docker exec wordpress wp cache flush --allow-root
容器运行在80端口(HTTP),生产环境需使用反向代理(如nginx-proxy、Traefik)实现HTTPS/TLS。
通过环境变量调整:
yamlWORDPRESS_CONFIG_EXTRA: "define('WP_MEMORY_LIMIT', '256M');"
yamlCACHE_TTL: 24h CACHE_STALE: 168h # 1周
bashcurl -I https://yoursite.com | grep cache-status
bashdocker logs wordpress
bashcurl http://localhost/souin-api/souin
BADGER_EXTRA_CONFIG调整Badger内存设置bashdocker exec wordpress tail -f /var/www/html/wp-content/debug.log
基于以下开源工具构建:
本项目整合多个开源组件:
WordPress: GPL-2.0+
FrankenPHP: MIT
Caddy: Apache 2.0
Souin: MIT;
wp_remote_request('http://localhost/souin-api/souin/' . $cache_key, [ 'method' => 'PURGE' ]); });
## WebP图片支持 安装**EWWW Image Optimizer**插件实现自动WebP转换: __CODE_TOKEN_8__ 在插件设置中启用"WebP转换",Caddy会自动向兼容浏览器提供WebP格式。 ## WP-CLI使用 __CODE_TOKEN_9__ ## PHP扩展 - bcmath、exif、gd(JPEG/WebP)、intl、mysqli、zip、soap、imagick、opcache ## 端口配置 容器运行在80端口(HTTP),生产环境需使用反向代理(如nginx-proxy、Traefik)实现HTTPS/TLS。 ## 性能调优 ### 内存限制 通过环境变量调整: __CODE_TOKEN_10__ ### 缓存有效期 __CODE_TOKEN_11__ ## 安全考虑 1. **数据库凭证**:使用Docker secrets或加密变量 2. **HTTPS**:生产环境务必通过反向代理启用HTTPS 3. **更新**:定期拉取最新镜像获取安全更新 4. **文件权限**:容器以www-data(非root)用户运行 5. **卷权限**:确保挂载卷的正确所有权 ## 监控 ### 缓存性能 __CODE_TOKEN_12__ ### 缓存日志 __CODE_TOKEN_13__ ### 缓存统计 __CODE_TOKEN_14__ ## 故障排除 ### 缓存不工作 1. 检查缓存状态头部 2. 确认未登录(Cookie会绕过缓存) 3. 检查缓存匹配规则配置 4. 检查Badger存储权限 ### 内存占用过高 1. 通过__CODE_TOKEN_72__调整Badger内存设置 2. 缩短缓存有效期 3. 减少OPcache内存 ### PHP错误 __CODE_TOKEN_15__ ## 致谢 基于以下开源工具构建: - https://frankenphp.dev/ by Kévin Dunglas - https://caddyserver.com/ Web服务器 - https://github.com/darkweak/souin HTTP缓存 - https://wordpress.org/ CMS ## 许可证 本项目整合多个开源组件: - WordPress: GPL-2.0+ - FrankenPHP: MIT - Caddy: Apache 2.0 - Souin: MIT
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务