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