Hub 文档
Spaces 开发模式:在 Spaces 中实现无缝开发
并获得增强的文档体验
开始使用
Spaces 开发模式:在 Spaces 中实现无缝开发
Spaces 开发模式
Spaces 开发模式是一项简化应用程序调试并加速 Spaces 迭代的功能。
每当您提交对 Space 仓库的更改时,底层 Docker 镜像会重建,然后会配置一个新的虚拟机来托管新的容器。
开发模式允许您通过覆盖 Docker 镜像来更快地更新您的 Space。
开发模式 Docker 镜像将您的应用程序作为子进程启动,允许您在不停止 Space 容器本身的情况下重新启动它。它还会在后台启动一个 VS Code 服务器和一个 SSH 服务器,供您连接到 Space。
连接到运行中的 Space 的能力解锁了多种用例
- 您可以更改应用程序代码,而无需每次都重新构建 Space
- 您可以调试运行中的应用程序并实时监控资源
总而言之,它通过跳过 Docker 镜像重建阶段,大大加快了 Spaces 的开发和实验速度。
界面
一旦在您的 Space 上启用开发模式,您应该会看到如下所示的模态框。


当您更改代码时,应用程序不会自动重新启动。为了使您的更改出现在 Space 中,您需要使用 `Refresh` 按钮来重新启动应用程序。
SSH 连接和 VS Code
开发模式允许您使用 SSH 连接到 Space 的 Docker 容器。
连接说明在开发模式控制模态框中列出。
您需要将您机器的 SSH 公钥添加到您的用户帐户才能使用 SSH 连接到 Space。请查看通过 SSH 使用 Git 文档以获取更详细的说明。
您还可以使用本地安装的 VS Code 连接到 Space 容器。为此,您需要安装 SSH Remote 扩展。
持久化更改
# Add changes and commit them
git add .
git commit -m "Persist changes from Dev Mode"
# Push the commit to persist them in the repo
git push
如果 Space 中有未提交或未推送的更改,模态框将显示警告


启用开发模式
您可以从网页界面在您的 Space 上启用开发模式。






您也可以创建启用了开发模式的 Space


限制
开发模式目前不适用于静态 Spaces。Docker Spaces 也有一些额外的要求。
Docker Spaces
开发模式支持 Docker Spaces。但是,您的 Space 需要符合以下规则才能使开发模式正常工作。
- 必须安装以下软件包
bash
(建立 SSH 连接所需)curl
、wget
和procps
(VS Code 服务器进程所需)git
和git-lfs
能够从您的开发模式环境中提交和推送更改
您的应用程序代码必须位于
/app
文件夹中,以便开发模式守护程序能够检测到更改。/app
文件夹必须由 uid 为1000
的用户拥有,以便您可以更改代码。Dockerfile 必须包含用于启动的
CMD
指令。有关CMD
指令的更多详细信息,请查看 Docker 文档。
当基础镜像基于 Debian(例如 Ubuntu)时,开发模式运行良好。
更奇特的 Linux 发行版(例如 Alpine)尚未经过测试,并且不保证开发模式在其上能正常工作。
兼容 Dockerfile 示例
这是与 Spaces 开发模式兼容的 Dockerfile 示例。
它使用 `apt-get` 安装所需的软件包,以及一些方便开发人员使用的软件包(即:`top`、`vim` 和 `nano`)。然后它从 `/app` 启动一个 NodeJS 应用程序。
FROM node:19-slim
RUN apt-get update && \
apt-get install -y \
bash \
git git-lfs \
wget curl procps \
htop vim nano && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --link ./ /app
RUN npm i
RUN chown 1000 /app
USER 1000
CMD ["node", "index.js"]
此组织中有几个与开发模式兼容的 Docker Spaces 示例。请随时将它们复制到您的命名空间中!
Python 应用程序示例 (FastAPI HTTP server): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python
Javascript 应用程序示例 (Express.js HTTP server): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript
反馈
您可以直接在 HF Hub 上分享您对 Spaces 开发模式的反馈:https://huggingface.co/spaces/dev-mode-explorers/README/discussions
< > 在 GitHub 上更新