
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://github.com/startersclan/bf2stats/workflows/ci-master-pr/badge.svg](https://github.com/startersclan/bf2stats/actions)
BF2Statistics 2.x.x 带Docker支持版本。
尽管BF2Statistics https://github.com/BF2Statistics/ASP 已发布,但它与<= 2.x.x版本不向后兼容。因此,本项目旨在帮助那些希望保留2.x.x统计系统的用户,并简化该技术栈的部署(因官方支持稀缺)。它运行在PHP 7.4和nginx环境上。
asp镜像(支持的环境变量详见此处):
shdocker run --rm -it -p 80:80 -e DB_HOST=db -e DB_PORT=3306 -e DB_NAME=bf2stats -e DB_USER=admin -e DB_PASS=admin startersclan/bf2stats:2.9.4-asp
bf2sclone镜像(支持的环境变量详见此处):
shdocker run --rm -it -p 80:80 -e DBIP=db -e DBNAME=bf2stats -e DBLOGIN=admin -e DBPASSWORD=admin startersclan/bf2stats:2.9.4-bf2sclone
查看此示例,了解如何使用docker-compose部署https://github.com/startersclan/docker-bf2/%E3%80%81https://github.com/startersclan/PRMasterServer%EF%BC%88%E4%BD%9C%E4%B8%BA%E4%B8%BB%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%89%E5%92%8C%60bf2stats%60%EF%BC%88%E4%BD%9C%E4%B8%BA%E7%BB%9F%E8%AE%A1%E7%BD%91%E9%A1%B5%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%89%E3%80%82
查看此示例,了解如何使用docker-compose部署https://github.com/startersclan/docker-bf2/%EF%BC%8C%E6%90%AD%E9%85%8DBF2Hub%E4%BD%9C%E4%B8%BA%E4%B8%BB%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8C%60bf2stats%60%E4%BD%9C%E4%B8%BA%E7%BB%9F%E8%AE%A1%E7%BD%91%E9%A1%B5%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%82
v2.2.0至v2.5.x版本间升级:更新Docker镜像标签,登录ASP并按照说明升级数据库<= v2.5.x升级到v2.6.x:详见此处的说明v2.6.0及以上版本间升级:更新Docker镜像标签,登录ASP并按照说明升级数据库若使用Docker Compose v2,请使用docker compose而非docker-compose。
sh# 1. 启动 docker-compose up --build # ASP可通过 http://localhost:8081/ASP 访问。用户名:admin,密码:admin。首次使用需登录并设置数据库。详见 ./config/ASP/config.php # bf2sclone可通过 http://localhost:8082 访问 # phpmyadmin可通过 http://localhost:8083 访问。用户名:admin,密码:admin。详见 ./config/ASP/config.php 配置文件 # 2. 若首次设置数据库,需重启BF2服务器以开始记录统计数据 docker-compose restart bf2 # 3. 启动BF2客户端前,需通过修改 C:\Windows\system32\drivers\etc\hosts 文件伪造GameSpy DNS。这是BF2客户端正常工作的必要步骤。 # 将'192.168.1.100'替换为开发机器的IP地址 192.168.1.100 battlefield2.available.gamespy.com 192.168.1.100 battlefield2.master.gamespy.com 192.168.1.100 battlefield2.ms14.gamespy.com 192.168.1.100 master.gamespy.com 192.168.1.100 motd.gamespy.com 192.168.1.100 gpsp.gamespy.com 192.168.1.100 gpcm.gamespy.com 192.168.1.100 gamespy.com 192.168.1.100 bf2web.gamespy.com 192.168.1.100 gamestats.gamespy.com 192.168.1.100 eapusher.dice.se # 4. 启动BF2客户端并连接到BF2服务器 # - 若使用BF2Hub作为GameSpy服务器,启动BF2.exe,登录BF2Hub账户,通过“多人游戏 > 连接到IP”连接服务器 # - 若使用docker-compose中的PRMasterserver作为GameSpy服务器,若之前使用BF2Hub补丁器修补过BF2.exe,需先取消修补。然后启动BF2.exe(不使用BF2Hub),创建新在线账户并登录,通过“多人游戏 > 连接到IP”连接服务器 # 回合结束后,BF2服务器会将统计快照发送至ASP。可在ASP和bf2sclone中查看统计数据。 # 开发 - 安装VSCode扩展 # 安装后,在代码中设置断点,按F5开始调试 code --install-extension bmewburn.vscode-intelephense-client # PHP智能感知 code --install-extension xdebug.php-debug # PHP远程调试(通过xdebug) code --install-extension ms-python.python # Python智能感知 # 若xdebug无法工作,可能是docker桥接的iptables INPUT链设置为DROP。 # 执行以下命令允许PHP通过docker0桥接访问主机 sudo iptables -A INPUT -i br+ -j ACCEPT # BF2服务器 - 重启服务器 docker-compose restart bf2 # BF2服务器 - 附加到服务器控制台 docker attach $( docker-compose ps -q bf2 ) # BF2服务器 - 进入容器 docker exec -it $( docker-compose ps -q bf2) bash # BF2服务器 - 查看日志 docker exec -it $( docker-compose ps -q bf2 ) bash -c 'cat python/bf2/logs/bf2game_*' # BF2服务器 - 列出快照 docker exec -it $( docker-compose ps -q bf2 ) ls -alR python/bf2/logs/snapshots/unsent # asp - 进入容器 docker exec -it $( docker-compose ps -q asp ) sh # asp - 列出备份 docker exec -it $( docker-compose ps -q asp ) ls -al /src/ASP/system/database/backups # asp - 列出配置 docker exec -it $( docker-compose ps -q asp ) ls -al /src/ASP/system/config # asp - 查看日志 docker exec -it $( docker-compose ps -q asp ) ls -al /src/ASP/system/logs # asp - 列出快照 docker exec -it $( docker-compose ps -q asp ) ls -alR /src/ASP/system/snapshots # 测试 ./test/test.sh dev 1 # 测试生产构建1 ./test/test.sh prod1 1 # 测试生产构建2 ./test/test.sh prod2 1 # 测试快照 curl -s -A GameSpyHTTP/1.0 -H 'Content-Type: application/json' --data @test/snapshots/-test-snapshot.txt localhost:8081/ASP/bf2statistics.php # 备份数据库 docker exec $( docker-compose ps -q db ) mysqldump -uroot -padmin bf2stats | gzip > bf2stats.sql.gz # 恢复数据库 zcat bf2stats.sql.gz | docker exec -i $( docker-compose ps -q db ) mysql -uroot -padmin bf2stats # 停止 docker-compose down # 清理 docker-compose down --remove-orphans docker volume rm bf2stats_prmasterserver-volume docker volume rm bf2stats_backups-volume docker volume rm bf2stats_config-volume docker volume rm bf2stats_logs-volume docker volume rm bf2stats_snapshots-volume docker volume rm bf2stats_bf2sclone-cache-volume docker volume rm bf2stats_db-volume
sh./release.sh 2.x.x git add . git commit -m "Chore: Release 2.x.x"
A: 这是由于UI无法处理后端无效响应的bug导致。在JSON响应前会输出PHP_ERROR警告:Warning: file_put_contents(/src/ASP/system/config/config.php): failed to open stream: Permission denied in /src/ASP/system/core/Config.php on line 165,导致JSON无效。
授予PHP对config.php的写权限:
shchmod 666 ./config/ASP/config.php docker-compose restart asp
Warning: file_put_contents(/src/ASP/system/config/config.php): failed to open stream: Permission denied in /src/ASP/system/core/Config.php on line 165A: 授予PHP用户对./src/ASP/system/config/config.php的写权限。
There was an error testing the system. Please refresh the page and try again.A: 表示UI从后端接收到无效的JSON响应。若有能力,可检查POST响应的负载。
BF2Statistics Processing Check: Fail或Gamespy (.aspx) Basic Response: Fail或Gamespy (.aspx) Advanced (1) Response: FailA: DNS解析问题。测试中用于验证GameSpy端点的HOST与浏览器中访问ASP的主机相同。例如,若通过http://yourdomain.com/访问ASP,测试会针对http://yourdomain.com/ASP/*.aspx进行,若yourdomain.com的DNS解析失败则会出错。
开发环境中可忽略此错误,已有集成测试确保这些端点正常工作。
生产环境中应使用完全限定域名(FQDN),使ASP能解析其外部DNS名称以测试外部Web端点。
Importing Logs Failed!A: 与此问题原因相同。
Table (army) *NOT* Backed Up: [1045] Access denied for user 'admin'@'%' (using password: YES)A: db用户没有FILE权限。可手动添加授权,但即使添加,仍无法在不引入重大安全问题的情况下完成备份。详见此问题。
Table (army) *NOT* Backed Up: [1] Can't create/write to filebackupdb模块使用SELECT * INTO OUTFILE,但src文件不在db容器中,mariadb无法找到导出路径。过去,apache、php和mysql运行在同一台机器上,可写入相同文件系统;但在Docker中,每个容器有独立文件系统。唯一解决方法是将backups-volume以相同路径/src/ASP/system/database/backups/挂载到db容器和ASP容器中,并授予php用户(82)和mariadb用户(999)写权限,这需要目录权限设为777(全局可写),存在严重安全隐患。
建议通过cron任务使用mysqldump从链接到db容器的其他容器备份数据库:
sh# 从主机`db`、用户`root`、密码`admin`、数据库`bf2stats`导出数据 mysqldump -hdb -uroot -padmin bf2stats
docker-compose up时PHP日志中出现Xdebug: [Step Debug] Could not connect to debugging client. Tried: host.docker.internal:9000 (through xdebug.client_host/xdebug.client_port)A: 开发环境中,PHP调试器未运行。在VSCode中按F5启动PHP调试器。若无需调试,在docker-compose.yml中设置XDEBUG_MODE=off禁用XDebug。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务