本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

此Docker镜像现已弃用。您无需再使用此镜像,直接使用Uvicorn并添加--workers参数即可实现相同功能。详情请参见下文。
python3.11, latest (Dockerfile)python3.10, (Dockerfile)python3.9, (Dockerfile)python3.11-slim (Dockerfile)python3.10-slim (Dockerfile)python3.9-slim (Dockerfile)⚠️ 以下标签不再受支持或维护,已从GitHub仓库中移除,但Docker Hub可能仍保留最后推送的版本:
python3.9-alpine3.14python3.8python3.8-slimpython3.8-alpine3.10python3.7python3.7-alpine3.8python3.6python3.6-alpine3.8这些版本的最后日期标签:
python3.9-alpine3.14-2024-03-11python3.8-2024-11-02python3.8-slim-2024-11-02python3.8-alpine3.10-2024-03-11python3.7-2024-11-02python3.7-alpine3.8-2024-03-11python3.6-2022-11-25python3.6-alpine3.8-2022-11-25注意:存在按构建日期命名的标签。若需固定镜像版本,可选择此类标签,例如
tiangolo/uvicorn-gunicorn:python3.11-2024-11-02。
uvicorn-gunicorn是一个Docker镜像,包含Uvicorn(基于ASGI规范的Python异步Web服务器)和Gunicorn(进程管理器),用于高性能Python Web应用,并具备自动性能调优能力。
原设计目标是通过自动调整工作进程数量(基于可用CPU核心数),简化部署流程,使开发者只需添加应用代码即可获得高性能。
slim变体。原适用场景:
适用于简单部署环境,需要快速启动高性能ASGI应用(如FastAPI、Starlette),无需手动配置进程管理。
当前建议:
此镜像已弃用,现代部署应优先考虑以下方案:
直接使用Uvicorn:通过--workers参数手动指定工作进程数,例如:
uvicorn app.main:app --host 0.0.0.0 --port 80 --workers 4
集群环境(Kubernetes/Docker Swarm等):在集群中,应通过集群级别的副本管理(而非容器内进程管理器)实现扩展,此时建议构建基础镜像并运行单Uvicorn进程,例如:
FROM python:3.11 WORKDIR /code COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY ./app /code/app CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
以Python 3.11为例,构建自定义应用镜像:
FROM tiangolo/uvicorn-gunicorn:python3.11 # 复制依赖文件并安装 COPY ./requirements.txt /app/requirements.txt RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt # 复制应用代码 COPY ./app /app
应用结构要求:默认加载
/app/app/main.py或/app/main.py中的app变量(ASGI应用实例)。
# 构建镜像 docker build -t my-asgi-app ./ # 运行容器 docker run -d --name my-app -p 80:80 my-asgi-app
可通过环境变量自定义行为,以下为关键参数及默认值:
| 变量名 | 描述 | 默认值 |
|---|---|---|
MODULE_NAME | 应用模块路径 | app.main(若/app/app/main.py存在)或main(若/app/main.py存在) |
VARIABLE_NAME | ASGI应用实例变量名 | app |
APP_MODULE | 完整应用路径(MODULE_NAME:VARIABLE_NAME) | 自动推导(如app.main:app) |
WORKERS_PER_CORE | 每个CPU核心的工作进程数(支持浮点) | 1(单核心时默认2个进程) |
MAX_WORKERS | 最大工作进程数限制 | 无限制 |
WEB_CONCURRENCY | 覆盖自动计算的工作进程数 | 自动计算(WORKERS_PER_CORE * CPU核心数) |
PORT | 容器监听端口 | 80 |
LOG_LEVEL | 日志级别(debug/info/warning/error/critical) | info |
GUNICORN_CMD_ARGS | Gunicorn额外命令行参数(优先级最高) | 无 |
# 限制最大工作进程为4,每个核心0.5个进程 docker run -d -p 80:80 -e MAX_WORKERS=4 -e WORKERS_PER_CORE=0.5 my-asgi-app
创建gunicorn_conf.py并挂载到容器,覆盖默认配置:
docker run -d -p 80:80 -e GUNICORN_CONF="/app/custom_gunicorn_conf.py" -v $(pwd)/custom_gunicorn_conf.py:/app/custom_gunicorn_conf.py my-asgi-app
添加/app/prestart.sh执行启动前任务(如数据库迁移):
#!/usr/bin/env bash # 等待数据库启动 sleep 10 # 执行Alembic迁移 alembic upgrade head
赋予执行权限并构建镜像,容器会自动执行此脚本。
使用/start-reload.sh启动开发模式(单Uvicorn进程,代码变更自动重启):
docker run -d -p 80:80 -v $(pwd)/app:/app/app my-asgi-app /start-reload.sh
不建议使用Alpine标签(如python3.9-alpine3.14),原因:
slim标签(基于Debian),兼顾体积与兼容性。原镜像通过Gunicorn作为进程管理器,运行Uvicorn工作进程(uvicorn.workers.UvicornWorker)。随着Uvicorn原生支持--workers参数(管理子进程及重启),Gunicorn的进程管理功能已冗余,因此镜像被弃用。
原镜像设计为以下框架的基础镜像:
当前建议直接基于Python***镜像构建,无需依赖此类基础镜像。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429