Update Dockerfile to support persistent storage configuration for OpenCode, allowing data retention when the /data directory is writable. Enhance README.md with details on current storage limitations and alternative solutions for data persistence on Hugging Face Spaces.
Browse files- Dockerfile +3 -2
- README.md +10 -0
Dockerfile
CHANGED
|
@@ -26,6 +26,7 @@ RUN chown -R 1000:1000 /home/user
|
|
| 26 |
|
| 27 |
ENV HOME=/home/user
|
| 28 |
ENV PATH=/home/user/.opencode/bin:$PATH
|
|
|
|
| 29 |
|
| 30 |
# 以 UID 1000 运行(符合 HF Spaces 要求)
|
| 31 |
USER 1000
|
|
@@ -37,8 +38,8 @@ RUN /home/user/.opencode/bin/opencode --version
|
|
| 37 |
# Hugging Face Spaces 默认暴露 7860
|
| 38 |
EXPOSE 7860
|
| 39 |
|
|
|
|
| 40 |
# 启动 headless HTTP server,监听 0.0.0.0 以便 Space 代理访问
|
| 41 |
-
# 使用绝对路径,避免 UID 1000 下 PATH 未生效
|
| 42 |
# --cors 允许前端从指定 origin 跨域请求(Vercel 部署的 opencode web 客户端)
|
| 43 |
# 文档与 API: /doc 为 OpenAPI 3.1 规范
|
| 44 |
-
CMD ["/home/user/.opencode/bin/opencode
|
|
|
|
| 26 |
|
| 27 |
ENV HOME=/home/user
|
| 28 |
ENV PATH=/home/user/.opencode/bin:$PATH
|
| 29 |
+
# 持久化由 CMD 内根据 /data 是否可写再设置 XDG_DATA_HOME,此处不默认指定
|
| 30 |
|
| 31 |
# 以 UID 1000 运行(符合 HF Spaces 要求)
|
| 32 |
USER 1000
|
|
|
|
| 38 |
# Hugging Face Spaces 默认暴露 7860
|
| 39 |
EXPOSE 7860
|
| 40 |
|
| 41 |
+
# 若 /data 存在且可写则用其做持久化;否则用默认目录(容器内临时)
|
| 42 |
# 启动 headless HTTP server,监听 0.0.0.0 以便 Space 代理访问
|
|
|
|
| 43 |
# --cors 允许前端从指定 origin 跨域请求(Vercel 部署的 opencode web 客户端)
|
| 44 |
# 文档与 API: /doc 为 OpenAPI 3.1 规范
|
| 45 |
+
CMD ["/bin/sh", "-c", "[ -w /data ] 2>/dev/null && export XDG_DATA_HOME=/data XDG_CONFIG_HOME=/data/.config; exec /home/user/.opencode/bin/opencode serve --port 7860 --hostname 0.0.0.0 --cors https://tacits-candy-shop.vercel.app --cors https://opencode-web-pearl.vercel.app"]
|
README.md
CHANGED
|
@@ -27,6 +27,16 @@ pinned: false
|
|
| 27 |
- `OPENCODE_SERVER_PASSWORD`(必填时启用认证)
|
| 28 |
- `OPENCODE_SERVER_USERNAME`(可选,默认 `opencode`)
|
| 29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
## 参考
|
| 31 |
|
| 32 |
- [Spaces 配置说明](https://huggingface.co/docs/hub/spaces-config-reference)
|
|
|
|
| 27 |
- `OPENCODE_SERVER_PASSWORD`(必填时启用认证)
|
| 28 |
- `OPENCODE_SERVER_USERNAME`(可选,默认 `opencode`)
|
| 29 |
|
| 30 |
+
## 持久化存储
|
| 31 |
+
|
| 32 |
+
- **现状**:Hugging Face 已不再提供 Spaces 的付费持久化盘(原先的 `/data` 卷)。当前容器重启后,会话等数据会丢失。
|
| 33 |
+
- **若平台挂载了 `/data`**:本镜像已设置 `XDG_DATA_HOME=/data`,OpenCode 会把会话、项目数据写到 `/data`,重启后可保留。
|
| 34 |
+
- **在 HF 上的替代做法**:
|
| 35 |
+
1. **Dataset 存状态**:用 [huggingface_hub](https://huggingface.co/docs/huggingface_hub) 把需要保留的数据定期写入某个 HF Dataset 仓库,重启后再从 Dataset 恢复。
|
| 36 |
+
2. **外部存储**:在应用里对接外部数据库(如 Supabase、PlanetScale)或对象存储(S3 等),把会话/状态存到外部,不依赖容器磁盘。
|
| 37 |
+
|
| 38 |
+
详见 [Spaces 存储说明](https://huggingface.co/docs/hub/spaces-storage)。
|
| 39 |
+
|
| 40 |
## 参考
|
| 41 |
|
| 42 |
- [Spaces 配置说明](https://huggingface.co/docs/hub/spaces-config-reference)
|