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 上更新