
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该Web应用主要实现以下功能:
mpstats端口的用户应用旨在为用户提供一站式端口查找平台,同时帮助维护者监控其端口并了解用户群体。生产环境实例运行于ports.macports.org。
更多信息参见docs/1-INFORMATION.md
Web应用基于Django框架开发,使用PostgreSQL数据库。
应用推荐部署在Docker容器中,通过nginx和uWSGI提供服务。
该应用是在Google Summer of Code 2019期间由MacPorts组织指导开发:
学生:https://github.com/arjunsalyan
导师:https://github.com/mojca%E3%80%81https://github.com/umeshksingla
mpstats端口的用户的系统配置和安装端口数据Docker镜像已预配置自动运行migrations和collectstatic命令,需手动执行初始数据填充和定时任务启动。
1.1 获取镜像
可直接拉取镜像或本地构建:
bash# 拉取镜像 docker pull arjunsalyan/macports-webapp # 或本地构建 docker build -t macports-webapp .
1.2 创建环境变量文件
在项目根目录创建env文件,配置以下环境变量(参考项目根目录的env.sample文件):
DB_NAME=数据库名称 DB_USER=数据库用户名 DB_PASSWORD=数据库密码 DB_HOST=数据库主机地址(连接主机数据库时使用host.docker.internal代替localhost) DB_PORT=数据库端口(默认:5432) SECRET_KEY=Django应用密钥
1.3 启动容器
bashdocker run -d -p 80:80 --env-file=env --name=macports-webapp macports-webapp
访问127.0.0.1:80验证启动状态(首次加载可能需10-15秒,后台执行迁移和静态文件收集)。
1.4 填充初始数据
仅在空数据库上执行,从rsync服务器获取最新PortIndex.json并填充数据库:
bashdocker exec macports-webapp python3 /code/app/manage.py autoload-initial-data
注:该过程耗时较长(通常30分钟内,取决于数据库与应用的连接速度)。
1.5 启动定时任务
数据填充完成后启动定时任务:
bashdocker exec macports-webapp supervisorctl start cron
启动后将自动执行以下任务:
python3 manage.py fetch-build-historypython3 manage.py update-portinfo1.6 执行其他命令
应用支持的其他命令通过以下方式执行:
bashdocker exec macports-webapp [命令]
/app目录为独立Django应用,可按标准Django应用方式运行。
2.1 数据库配置
推荐通过环境变量配置数据库连接(避免直接修改配置文件),需设置以下环境变量:
DB_NAME=数据库名称 DB_USER=数据库用户名 DB_PASSWORD=数据库密码 DB_HOST=数据库主机地址 SECRET_KEY=Django应用密钥
不推荐方式:直接修改app/MacPorts/settings.py文件配置数据库凭据。
2.2 数据库迁移
bash# 创建迁移文件 python3 manage.py makemigrations # 执行迁移 python3 manage.py migrate
2.3 填充初始数据
portindex.json文件(通过portindex2json.tcl生成)bashpython3 manage.py load <文件名> # 不指定文件名则使用默认portindex.json
bashpython3 manage.py fetch-build-history
2.4 启动服务器
bash# 收集静态文件 python3 manage.py collectstatic # 启动开发服务器 python3 manage.py runserver
2.5 更新数据库
将新的JSON文件放置在项目根目录,执行更新命令:
bashpython3 manage.py update <文件名> # 不指定文件名则使用默认portindex.json
支持基于提供的JSON文件特性进行差异更新或全量更新。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务