
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
muffin-docker 是基于 Docker 的 Muffin 框架镜像,集成 Gunicorn 和 Uvicorn 作为应用服务器,用于快速部署基于 Muffin 的 ASGI 应用。该镜像提供两个版本:
horneds/muffin):包含 Python、Muffin、Gunicorn、Uvicornhorneds/muffin-node):在基础版本上增加 NodeJS 环境支持多种 Python 版本,适用于开发和生产环境中 Muffin 应用的容器化部署。
| 镜像名称 | 标签 | Python 版本 | 包含 NodeJS |
|---|---|---|---|
horneds/muffin | py39, py310, py311 | 3.9, 3.10, 3.11 | 否 |
horneds/muffin | py312, latest | 3.12 | 否 |
horneds/muffin-node | py39, py310, py311 | 3.9, 3.10, 3.11 | 是 |
horneds/muffin-node | py312, latest | 3.12 | 是 |
muffin-node 镜像无需克隆 GitHub 仓库,直接将该镜像作为基础镜像,在应用的 Dockerfile 中引用:
dockerfileFROM docker.xuanyuan.run/horneds/muffin:latest # 或指定版本标签,如 horneds/muffin:py311 # 将应用代码复制到容器内的 /app 目录 COPY ./app /app
应用代码要求:
/app/app.py 或 /app/main.pyapp 的 ASGI 应用实例(即 app = Muffin(__name__) 创建的实例)应用通常需要安装自定义依赖(如特定版本的 Uvicorn、Gunicorn 或业务库),推荐通过 requirements.txt 或 Poetry 管理并固定版本。
使用 PIP 安装依赖
在应用目录下创建 requirements.txt,列出依赖及版本:
txt# requirements.txt 示例 muffin==0.9.0 uvicorn==0.24.0 gunicorn==21.2.0
在 Dockerfile 中添加依赖安装步骤:
dockerfileFROM docker.xuanyuan.run/horneds/muffin:latest # 复制依赖文件并安装 COPY ./requirements.txt /app/requirements.txt RUN pip install -r /app/requirements.txt # 复制应用代码 COPY ./app /app
构建镜像
在包含 Dockerfile 的目录下执行构建命令:
bashdocker build -t my-muffin-app ./
运行容器
启动容器并映射端口(示例映射主机 80 端口到容器 80 端口):
bashdocker run -d --name my-app-container -p 80:80 docker.xuanyuan.run/my-muffin-app
访问应用:
容器启动后,通过 http://<Docker 主机 IP> 访问应用(本地环境通常为 http://127.0.0.1)。
通过环境变量自定义应用启动参数,支持以下变量:
| 变量名 | 默认值 | 描述 |
|---|---|---|
MODULE_NAME | app(或 main) | 包含 ASGI 应用的 Python 模块路径,支持多级路径(如 app.main) |
VARIABLE_NAME | app | 模块中 ASGI 应用实例的变量名 |
SETUP_SCRIPT | 无 | 启动 Gunicorn 前执行的自定义脚本(如数据库迁移命令) |
GWORKER_CLASS | uvicorn.workers.UvicornWorker | Gunicorn 工作进程类 |
GWORKERS | CPU 核心数 | Gunicorn 工作进程数量(默认等于主机 CPU 核心数) |
HOST | 0.0.0.0 | 服务器绑定的主机地址(若设置 GBIND,此变量失效) |
PORT | 80 | 服务器绑定的端口(若设置 GBIND,此变量失效) |
GBIND | 无 | 直接指定服务器绑定地址(格式 host:port),优先级高于 HOST 和 PORT |
GLOG_LEVEL | info | Gunicorn 日志级别(可选:debug、info、warning、error、critical) |
GUNICORN_CMD_ARGS | 无 | 额外的 Gunicorn 命令行参数(如 --timeout 60) |
示例:
启动容器时指定自定义模块和端口:
bashdocker run -d \ --name my-app-container \ -p 8080:8080 \ -e MODULE_NAME=app.entry \ -e PORT=8080 \ docker.xuanyuan.run/my-muffin-app
本项目基于 https://opensource.org/licenses/MIT 开源。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务