
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Freezing Saddles Web是Freezing Saddles(又名BikeArlington Freezing Saddles,"BAFS")基于Strava的冬季骑行竞赛软件的Web组件。该应用由多个协同工作的组件构成(设计为Docker容器运行),Web组件主要负责提供排行榜查看功能。
注:完整系统包含以下组件:
依赖项
建议直接在工作站上安装Python 3.6和pip以方便开发调试,已在macOS 13.x(High Sierra)、多种Linux发行版和Windows 10上测试通过。
安装步骤
bash# 克隆仓库 shell$ mkdir freezingsaddles && cd freezingsaddles shell$ for part in sync web compose nq model; do git clone https://github.com/freezingsaddles/freezing-$part.git; done # 为freezing-web创建并激活虚拟环境 shell$ cd freezing-web shell$ python3.6 -m venv env # Windows系统使用: env/Scripts/activate shell$ source env/bin/activate (env) shell$ pip install -r requirements.txt (env) shell$ python setup.py develop
后续命令均假设在激活的freezing-web虚拟环境中运行(命令前缀为"(env) shell$")。
数据库设置
使用Docker设置数据库
可使用开发支持的Docker Compose文件简化数据库设置,详见https://github.com/freezingsaddles/freezing-compose%E4%BB%93%E5%BA%93%E8%AF%B4%E6%98%8E%E3%80%82
手动设置数据库
安装MySQL 5.6或更高版本(生产服务器使用MySQL 5.6)。创建数据库和用户:
bashshell$ mysql -uroot mysql> create database freezing; mysql> grant all on freezing.* to freezing@localhost;
配置和运行服务器
配置文件为shell环境文件(也可直接使用环境变量)。可参考示例文件example.cfg,需设置环境变量APP_SETTINGS指向配置文件路径。
使用新的development.cfg配置文件启动Web服务器示例:
bash(env) shell$ cp example.cfg development.cfg # 编辑配置文件 (env) shell$ APP_SETTINGS=development.cfg freezing-server
关键配置项:
配置文件示例:
bash# MySQL数据库的SQLAlchemy连接URL(注意字符集) # 注意:如果使用Docker,主机使用127.0.0.1而非localhost SQLALCHEMY_URL=mysql+pymysql://freezing@localhost/freezing?charset=utf8mb4&binary_prefix=true # 创建Strava应用时获取的客户端信息 # 仅在测试应用授权或登录功能时需要 STRAVA_CLIENT_ID=xxxx1234 STRAVA_CLIENT_SECRET=5678zzzz
与freezing-model协同开发
由于多个项目依赖freezing-model,开发时可能需要修改该库。按以下步骤可在本地开发环境中链接freezing-model:
cd ~/workspace/freezing-webpython3 -m venv envsource env/bin/activatecd ~/workspace/freezing-modelpip install -r requirements.txt && python setup.py developcd -pip install -r requirements.txt && python setup.py develop永久使用修改后的freezing-model需为其创建新版本标签并更新freezing-web/requirements.txt中的版本号。
编码标准
代码需符合https://www.python.org/dev/peps/pep-0008/%E8%A7%84%E8%8C%83%EF%BC%8C%E4%BD%BF%E7%94%A8https://black.readthedocs.io/en/stable/%E8%BF%9B%E8%A1%8C%E6%A0%BC%E5%BC%8F%E5%8C%96%EF%BC%8Cflake8%E8%BF%9B%E8%A1%8C%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5%E3%80%82%E5%AE%89%E8%A3%85%E6%B5%8B%E8%AF%95%E4%BE%9D%E8%B5%96%E4%BB%A5%E8%8E%B7%E5%8F%96%E8%BF%99%E4%BA%9B%E5%B7%A5%E5%85%B7%EF%BC%9A%60pip install -r test-requirements.txt`。
完整部署指南见https://github.com/freezingsaddles/freezing-compose%E3%80%82%E8%AF%A5%E7%BB%84%E4%BB%B6%E8%AE%BE%E8%AE%A1%E4%B8%BA%E5%AE%B9%E5%99%A8%E8%BF%90%E8%A1%8C%EF%BC%8C%E9%9C%80%E9%85%8D%E7%BD%AE%E4%BB%A5%E4%B8%8B%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%EF%BC%9A
DEBUG: 是否显示异常堆栈跟踪等调试信息SECRET_KEY: 用于加密Flask会话cookie的密钥BEANSTALKD_HOST: beanstalkd服务器主机名(可能是容器链接)BEANSTALKD_PORT: beanstalkd服务器端口(默认***)SQLALCHEMY_URL: 数据库URLSTRAVA_CLIENT_ID: Strava应用IDSTRAVA_CLIENT_SECRET: Strava应用密钥(可从Strava应用设置页面获取)TEAMS: 竞赛团队(Strava俱乐部)ID的逗号分隔列表(格式:cast=list, subcast=int, default=[])OBSERVER_TEAMS: 仅观察不参与竞赛的团队ID逗号分隔列表(可包含整体统计但不计入排行榜)START_DATE: 竞赛开始日期END_DATE: 竞赛结束日期bashmysqldump > "freezing-$(date +'%Y-%m-%d').sql"
/opt/compose/.env文件:
bashcp /opt/compose/.env "/opt/compose/.env-$(date +'%Y-%m-%d')"
.env文件(路径/opt/compose/.env):
MAIN_TEAMTEAMS和OBSERVER_TEAMS中的所有团队COMPETITION_TITLE以反映新年份teams表插入与MAIN_TEAM ID匹配的新记录:
sqlinsert into teams values (567288, 'Freezing Saddles 2020', 1);
bashcd /opt/compose && docker-compose up -d
.env文件中添加竞赛团队和观察团队IDbashcd /opt/compose && docker-compose up -d
运动员加入指定竞赛团队后将自动分配到正确团队。
本软件是社区驱动的成果,贡献归各贡献者所有:
Copyright 2015 Ian Will
Copyright 2019 Hans Lillelid
Copyright 2020 Jon Renaut
Copyright 2020 Merlin Hughes
Copyright 2020 Richard Bullington-McGuire
Copyright 2020 Adrian Porter
Copyright 2020 Joe Tatsuko
本软件根据Apache 2.0许可证授权,部分标记内容采用兼容许可证(如[MIT许可的test/wget-spider.sh])。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务