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


当您更改代码时,应用程序不会自动重启。为了使您的更改在 Space 中生效,您需要使用“刷新”按钮来重启应用程序。
SSH 连接和 VS Code
Dev Mode 允许您使用 SSH 连接到您的 Space 的 Docker 容器。
连接说明列在 Dev Mode 控制模态框中。
您需要将您机器的 SSH 公钥添加到您的用户帐户,才能使用 SSH 连接到 Space。请查阅Git over SSH 文档以获取更详细的说明。
您还可以使用本地安装的 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 中有未提交或未推送的更改,模态框将显示警告


启用 Dev Mode
您可以从 Web 界面在您的 Space 上启用 Dev Mode。






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


局限性
Dev Mode 目前不适用于静态 Spaces。Docker Spaces 也有一些额外的要求。
Docker Spaces
Docker Spaces 支持 Dev Mode。但是,您的 Space 需要遵守以下规则,Dev Mode 才能正常工作。
- 必须安装以下软件包
- `bash`(建立 SSH 连接所必需)
- `curl`、`wget` 和 `procps`(VS Code 服务器进程所必需)
- `git` 和 `git-lfs`,以便能够从您的 Dev Mode 环境提交和推送更改
您的应用程序代码必须位于 `/app` 文件夹中,Dev Mode 守护程序才能检测到更改。
`/app` 文件夹必须由 uid 为 `1000` 的用户拥有,以便您能够更改代码。
Dockerfile 必须包含用于启动的 `CMD` 指令。有关更多详细信息,请查看 Docker 关于 `CMD` 指令的文档。
当基础镜像基于 Debian(例如,ubuntu)时,Dev Mode 工作良好。
更为特殊的 Linux 发行版(例如,alpine)未经测试,Dev Mode 不保证在它们上工作。
兼容 Dockerfile 示例
这是一个与 Spaces Dev Mode 兼容的 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"]
在此组织中,有几个与 Dev Mode 兼容的 Docker Spaces 示例。欢迎在您的命名空间中复制它们!
Python 应用程序示例(FastAPI HTTP 服务器):https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python
Javascript 应用程序示例(Express.js HTTP 服务器):https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript
反馈
您可以直接在 HF Hub 上分享您对 Spaces Dev Mode 的反馈:https://huggingface.co/spaces/dev-mode-explorers/README/discussions
< > 在 GitHub 上更新