refactor: move runtime state under project data directory
This commit is contained in:
@@ -6,7 +6,7 @@ PORT=8317
|
||||
API_KEYS=sk-your-api-key
|
||||
|
||||
# 容器内 Lingma 二进制路径
|
||||
LINGMA_BIN=/app/bin/Lingma
|
||||
LINGMA_BIN=/app/data/bin/Lingma
|
||||
# Lingma 获取方式:marketplace 或 vsix
|
||||
LINGMA_SOURCE_TYPE=marketplace
|
||||
# Marketplace 发布者
|
||||
@@ -20,7 +20,7 @@ LINGMA_BOOTSTRAP_ALWAYS=true
|
||||
# 强制刷新(true 时忽略本地缓存)
|
||||
LINGMA_FORCE_REFRESH=false
|
||||
# Lingma 工作目录(登录/会话数据)
|
||||
LINGMA_WORK_DIR=/root/.lingma/vscode/sharedClientCache
|
||||
LINGMA_WORK_DIR=/app/data/.lingma/vscode/sharedClientCache
|
||||
# Lingma WebSocket 端口
|
||||
LINGMA_SOCKET_PORT=36510
|
||||
# Lingma 启动等待秒数
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -3,3 +3,7 @@ __pycache__/
|
||||
*.pyc
|
||||
bin/
|
||||
runtime-bin/
|
||||
data/
|
||||
!data/
|
||||
data/*
|
||||
!data/.gitkeep
|
||||
|
||||
13
README.md
13
README.md
@@ -10,13 +10,14 @@
|
||||
## 1. 准备目录
|
||||
|
||||
```bash
|
||||
mkdir -p runtime-bin
|
||||
mkdir -p data
|
||||
```
|
||||
|
||||
说明:
|
||||
|
||||
- 启动时会自动获取最新插件并提取 `Lingma` 到 `runtime-bin`。
|
||||
- 启动时会自动获取最新插件并提取 `Lingma` 到 `data/bin`。
|
||||
- 默认通过 VSCode Marketplace 查询最新版本,再下载对应 VSIX。
|
||||
- 登录态与运行数据统一写入 `data/.lingma`。
|
||||
|
||||
## 2. 配置环境变量
|
||||
|
||||
@@ -71,6 +72,8 @@ PORT=8317
|
||||
API_KEYS=sk-your-api-key
|
||||
LINGMA_USERNAME=your-username
|
||||
LINGMA_PASSWORD=your-password
|
||||
LINGMA_BIN=/app/data/bin/Lingma
|
||||
LINGMA_WORK_DIR=/app/data/.lingma/vscode/sharedClientCache
|
||||
LINGMA_SOURCE_TYPE=marketplace
|
||||
LINGMA_MARKETPLACE_PUBLISHER=Alibaba-Cloud
|
||||
LINGMA_MARKETPLACE_EXTENSION=tongyi-lingma
|
||||
@@ -78,6 +81,12 @@ LINGMA_VSIX_URL=https://tongyi-code.oss-cn-hangzhou.aliyuncs.com/vscode/tongyi-l
|
||||
DEDICATED_DOMAIN_URL=
|
||||
```
|
||||
|
||||
### 数据目录说明
|
||||
|
||||
- 本项目所有持久化数据都在 `./data`:
|
||||
- `data/bin/Lingma`:自动提取的 Lingma 二进制
|
||||
- `data/.lingma/...`:Lingma 登录态、缓存、日志
|
||||
|
||||
## 3. Docker 运行
|
||||
|
||||
```bash
|
||||
|
||||
@@ -87,7 +87,7 @@ def _query_marketplace_latest_vsix(publisher: str, extension: str) -> tuple[str,
|
||||
|
||||
|
||||
def bootstrap_from_vsix() -> None:
|
||||
lingma_bin = Path(os.getenv("LINGMA_BIN", "/app/bin/Lingma"))
|
||||
lingma_bin = Path(os.getenv("LINGMA_BIN", "/app/data/bin/Lingma"))
|
||||
source_type = os.getenv("LINGMA_SOURCE_TYPE", "marketplace").strip().lower()
|
||||
vsix_url = os.getenv(
|
||||
"LINGMA_VSIX_URL",
|
||||
|
||||
@@ -31,13 +31,13 @@ def load_settings() -> Settings:
|
||||
api_keys = [k.strip() for k in keys_raw.split(",") if k.strip()]
|
||||
work_dir = os.getenv(
|
||||
"LINGMA_WORK_DIR",
|
||||
str(Path.home() / ".lingma" / "vscode" / "sharedClientCache"),
|
||||
"/app/data/.lingma/vscode/sharedClientCache",
|
||||
)
|
||||
return Settings(
|
||||
host=os.getenv("HOST", "0.0.0.0"),
|
||||
port=int(os.getenv("PORT", "8317")),
|
||||
api_keys=api_keys,
|
||||
lingma_bin=os.getenv("LINGMA_BIN", "/app/bin/Lingma"),
|
||||
lingma_bin=os.getenv("LINGMA_BIN", "/app/data/bin/Lingma"),
|
||||
lingma_work_dir=work_dir,
|
||||
lingma_socket_port=int(os.getenv("LINGMA_SOCKET_PORT", "36510")),
|
||||
lingma_startup_timeout=int(os.getenv("LINGMA_STARTUP_TIMEOUT", "40")),
|
||||
|
||||
0
data/.gitkeep
Normal file
0
data/.gitkeep
Normal file
@@ -8,6 +8,5 @@ services:
|
||||
ports:
|
||||
- "${PORT:-8317}:${PORT:-8317}"
|
||||
volumes:
|
||||
- ./runtime-bin:/app/bin
|
||||
- /root/.lingma:/root/.lingma
|
||||
- ./data:/app/data
|
||||
restart: unless-stopped
|
||||
|
||||
Reference in New Issue
Block a user