Gradio免费部署完全指南:从本地share到Hugging Face Spaces、Docker与Nginx反向代理
2026/9/14 19:04:02 网站建设 项目流程

Gradio免费部署完全指南:从本地share到Hugging Face Spaces、Docker与Nginx反向代理

【免费下载链接】gradioBuild and share delightful machine learning apps, all in Python. 🌟 Star to support our work!项目地址: https://gitcode.com/GitHub_Trending/gr/gradio

Gradio 是一款纯 Python 的机器学习应用开发工具,无需前端基础即可几分钟内搭出可交互的 Web 应用。本文带你掌握 4 种免费部署方式:本地share隧道、Hugging Face Spaces 托管、Docker 容器化、以及 Nginx 反向代理接入自有域名,覆盖从快速演示到生产环境的完整链路。

一、30 秒上手:写一个 Gradio 应用

所有部署方式都从同一个极简应用出发,参考项目里的 hello_world/run.py:

import gradio as gr def greet(name): return "Hello " + name + "!" demo = gr.Interface(fn=greet, inputs="textbox", outputs="textbox") demo.launch()

运行后终端会提示Running on local URL: http://127.0.0.1:7860。默认情况下只有本机可访问,下面逐一介绍如何对外发布。

二、本地 share:一行参数生成公网隧道链接

最快发布方法:share=True

demo.launch(share=True)

Gradio 会在后台通过 FRP 隧道客户端(首次会自动下载二进制到你的机器)把本地 7860 端口"打洞"到官方分享服务器,生成形如https://xxxxxx.gradio.live公开链接

关键特性一览:

  • ⚡ 无需注册、无需打包,代码与模型仍跑在你自己的机器上
  • 🌐 对方在浏览器直接可玩,你的电脑需保持开机联网
  • ⏰ 官方分享链接会过期,且链接对任何人可见,不要暴露敏感信息
  • 🔐 可叠加认证:demo.launch(share=True, auth=("admin", "pass1234"))

该机制原理详见 understanding-gradio-share-links.md,适合临时演示、课堂分享、远程协作调试。

三、Hugging Face Spaces:永久免费的云托管

为什么要部署到 Spaces

share链接依赖你的电脑开机,而 Hugging Face Spaces 提供永久免费的云端基础设施,适合长期对外展示模型。

两种免费部署方式

  1. 命令行一键部署:在应用目录下执行
gradio deploy

CLI 会收集元数据、上传当前目录所有文件(遵守.gitignore),并在 Spaces 上启动应用;更新时重新执行即可。

  1. 浏览器拖拽上传:把包含app.py和所有依赖文件的文件夹直接拖入 HF 的"新建 Space"页面,适合不想碰命令行的新手。

官方分享托管指南见 07_sharing-your-app.md,其中还介绍了部署后的进阶能力:

  • 嵌入到你的网站:Spaces 页面的 "Embed this Space" 下拉框可直接复制<gradio-app>网页组件或 iframe 代码
  • API 页面:每个部署好的应用自动生成 REST API 文档页,可被 Python/JS 客户端调用
  • OAuth 登录:Space 元数据设置hf_oauth: true后即可用gr.LoginButton实现 Hugging Face 账号登录

四、Docker 容器化部署:环境一致的私有部署

适合场景

  • 公司内网/自有服务器部署,数据不出域
  • 用 Kubernetes 等编排系统水平扩容
  • 保证"开发、测试、生产"三套环境行为完全一致

三步完成容器化

完整教程见 deploying-gradio-with-docker.md。以 Dockerfile 为例:

FROM python:3.10-slim WORKDIR /usr/src/app COPY . . RUN pip install --no-cache-dir gradio EXPOSE 7860 ENV GRADIO_SERVER_NAME="0.0.0.0" CMD ["python", "app.py"]

然后构建并运行:

docker build -t gradio-app . docker run -p 7860:7860 gradio-app

打开http://localhost:7860即可访问。

两个必须知道的坑

  1. 必须监听 0.0.0.0:设置环境变量GRADIO_SERVER_NAME="0.0.0.0"(或在launch()中传server_name),否则容器外无法连入
  2. 多副本要开会话粘滞:Gradio 事件协议依赖前端与后端的多条持久连接,多副本部署时负载均衡需开启ClientIP粘滞(如 AWS ALB 的sessionAffinity),否则事件会"丢"

五、Nginx 反向代理:挂到自有域名子路径

适合场景

你已经用 Nginx 托管https://www.example.com网站,想把应用挂在子路径上,例如https://www.example.com/gradio-demo。完整步骤见 running-gradio-on-your-web-server-with-nginx.md。

配置要点

  1. /etc/nginx/sites-available/新建站点文件,核心配置:
server { listen 80; server_name example.com; location /gradio-demo/ { proxy_pass http://127.0.0.1:7860/; proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Proto $scheme; } }

⚠️Upgrade/Connection头是 WebSocket 所必需;X-Forwarded-Host/X-Forwarded-Proto用于 Gradio 拼接静态资源地址,漏配会导致页面加载残缺。

  1. 启动应用时root_path必须与子路径一致(源码定义见 blocks.py 的launch()参数):
demo.launch(root_path="/gradio-demo")

也可用环境变量GRADIO_ROOT_PATH统一配置,所有可用环境变量汇总在 10_environment-variables.md。

  1. 建议用tmux后台运行应用,最后执行sudo systemctl restart nginx重启即可。

六、4 种部署方式怎么选?

部署方式免费是否需要服务器链接生命周期最佳用途
share=True否(本机即可)临时(会过期)临时演示、远程调试
HF Spaces否(云端托管)永久公开作品、模型展示
Docker视环境而定自有服务器永久内网部署、K8s 扩容
Nginx 反代视环境而定自有服务器永久挂自有域名、生产环境

部署安全小贴士

  • 公网应用建议加认证:demo.launch(auth=("user", "pass")),认证机制详见分享指南
  • 对外发布前确认回调函数里没有读写本机敏感文件、执行危险操作的代码
  • 生产环境可用gr.Request获取访客 IP,实现限流与访问审计

总结

Gradio 的部署路径非常平滑:本地开发 →share=True快速验证 → Spaces 免费托管 → Docker/Nginx 私有生产部署,每一步都不需要额外费用门槛。新手建议从本地 share 开始体验,确定要长期展示后再迁移到 Hugging Face Spaces 即可。

更多部署与集成教程可参考 guides/11_other-tutorials/ 目录,其中还包含 Disco 一键部署、FastAPI 挂载 Gradio(mount_gradio_app)等进阶玩法。

【免费下载链接】gradioBuild and share delightful machine learning apps, all in Python. 🌟 Star to support our work!项目地址: https://gitcode.com/GitHub_Trending/gr/gradio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询