tao-shen commited on
Commit
32d5f26
·
1 Parent(s): 0f7da25

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
Files changed (2) hide show
  1. Dockerfile +3 -2
  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", "serve", "--port", "7860", "--hostname", "0.0.0.0", "--cors", "https://tacits-candy-shop.vercel.app", "--cors", "https://opencode-web-pearl.vercel.app"]
 
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)