docs: add docker / docker-compose run examples

Document ACR multi-arch image, compose minimal YAML, docker run
variants (pin version, custom port, --trusted-host), and token URL
handling.
This commit is contained in:
SKYMirror committed 2026-09-16 01:29:11 +08:00
1 parent 7444ba9ca0
commit 4be0850529
3 files changed
+292 -16

No files matched your search

+139
View File
@@ -38,6 +38,145 @@ dsh web: http://127.0.0.1:3081/?token=<一次性令牌>
> 官方 `@latest` **强制浏览器认证**,没有免 token 开关。`DSH_TRUST_ALL` 只存在于历史 fork 镜像,当前路径无效。
## 运行示例
已推送镜像(多架构 `linux/amd64` + `linux/arm64`):
```text
registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest
```
### 1. Docker Compose(推荐,本仓库源码构建)
```bash
git clone <本仓库地址>
cd DeepSeekHarnessDocker
# 国内网络:取消注释 docker-compose.yml 里的 DSH_NPM_REGISTRY
# - DSH_NPM_REGISTRY=https://registry.npmmirror.com
docker compose up -d --build
docker compose logs -f dsh
```
常用 compose 子命令:
```bash
docker compose ps # 状态
docker compose logs -f dsh # 跟日志(找 token URL)
docker compose restart dsh # 改完插件/配置后重启
docker compose down # 停容器,保留 dsh-data 卷
docker compose down -v # 连数据卷一起删(慎用)
docker compose build --no-cache # 强制重建镜像
```
完整 `docker-compose.yml` 可参考仓库内文件;最小可用示例:
```yaml
services:
dsh:
image: registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest
# 或本地构建:build: .
ports:
- "3080:3080"
volumes:
- dsh-data:/home/dsh/.dsh
- ./workspace:/workspace
environment:
- DSH_HOME=/home/dsh/.dsh
- HOME=/workspace
- DSH_NPM_REGISTRY=https://registry.npmmirror.com
# 远程用 IP 访问时打开(仍需 token cookie):
# command: ["--trusted-host", "your-server-ip"]
restart: unless-stopped
volumes:
dsh-data:
```
### 2. Docker Compose(直接用 ACR 预构建镜像,不 build)
```bash
mkdir -p dsh-docker && cd dsh-docker
# 把上面的 docker-compose.yml 存到当前目录后:
docker compose up -d
docker compose logs -f dsh
```
或一行拉起(无 compose):
```bash
docker pull registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest
docker run -d --name dsh \
--restart unless-stopped \
-p 3080:3080 \
-v dsh-data:/home/dsh/.dsh \
-v "$PWD/workspace":/workspace \
-e DSH_HOME=/home/dsh/.dsh \
-e HOME=/workspace \
-e DSH_NPM_REGISTRY=https://registry.npmmirror.com \
registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest
docker logs -f dsh
```
打开日志中的 URL(把 `:3081` 换成 `:3080`)。
### 3. `docker run` 变体
**钉住 dsh 版本(可复现):**
```bash
docker run -d --name dsh \
-p 3080:3080 \
-v dsh-data:/home/dsh/.dsh \
-e DSH_DIST_TAG=0.1.5-rc.1 \
-e DSH_NPM_REGISTRY=https://registry.npmmirror.com \
registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest
```
**改宿主机端口(例如 18080):**
```bash
docker run -d --name dsh \
-p 18080:18080 \
-v dsh-data:/home/dsh/.dsh \
-e DSH_FORWARD_PORT=18080 \
registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest
```
**其它机器通过服务器 IP 访问:**
```bash
docker run -d --name dsh \
-p 3080:3080 \
-v dsh-data:/home/dsh/.dsh \
-e DSH_NPM_REGISTRY=https://registry.npmmirror.com \
registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest \
--trusted-host 203.0.113.10
```
浏览器仍须先用日志里带 `?token=` 的 `http://203.0.113.10:3080/?token=…` 打开一次。
**前台调试(不 detach):**
```bash
docker run --rm -it \
-p 3080:3080 \
-v dsh-data:/home/dsh/.dsh \
-e DSH_NPM_REGISTRY=https://registry.npmmirror.com \
registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest
```
### 4. 进入容器
```bash
docker exec -it dsh sh
docker exec -it dsh dsh --version
docker exec -it dsh dsh plugin --profile web list
```
## 端口拓扑
官方 `dsh web` 只监听 `127.0.0.1`,并拒绝 `--host 0.0.0.0`。Docker `-p` 打不到容器内 loopback,因此 entrypoint 做 L4 转发: