Document ACR multi-arch image, compose minimal YAML, docker run variants (pin version, custom port, --trusted-host), and token URL handling.
124 lines
3.2 KiB
Markdown
124 lines
3.2 KiB
Markdown
# DeepSeek Harness Docker 部署
|
||
|
||
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(`dsh`)Web UI 的运行时镜像封装。
|
||
|
||
镜像只内置工具链。容器每次启动由 `docker/entrypoint.sh` 从 npm 安装官方 `@deepseek-ai/dsh@latest`,再经本地端口转发(`0.0.0.0:3080` → `127.0.0.1:3081`)启动 `dsh web`。
|
||
|
||
预构建镜像:
|
||
|
||
```text
|
||
registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest # linux/amd64 + linux/arm64
|
||
```
|
||
|
||
## 一、Docker Compose(推荐)
|
||
|
||
### 从本仓库构建并启动
|
||
|
||
```bash
|
||
git clone <本仓库地址>
|
||
cd DeepSeekHarnessDocker
|
||
|
||
docker compose up -d --build
|
||
docker compose logs -f dsh
|
||
```
|
||
|
||
### 直接使用 ACR 镜像
|
||
|
||
把仓库里的 `docker-compose.yml` 中 `build: context: .` 换成:
|
||
|
||
```yaml
|
||
image: registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest
|
||
```
|
||
|
||
然后:
|
||
|
||
```bash
|
||
docker compose up -d
|
||
docker compose logs -f dsh
|
||
```
|
||
|
||
### 最小 compose 示例
|
||
|
||
```yaml
|
||
services:
|
||
dsh:
|
||
image: registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest
|
||
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
|
||
restart: unless-stopped
|
||
|
||
volumes:
|
||
dsh-data:
|
||
```
|
||
|
||
### 常用 compose 命令
|
||
|
||
```bash
|
||
docker compose ps
|
||
docker compose logs -f dsh # 找带 ?token= 的访问 URL
|
||
docker compose restart dsh
|
||
docker compose down # 停容器,保留数据卷
|
||
docker compose down -v # 连卷一起删(慎用)
|
||
```
|
||
|
||
## 二、docker run
|
||
|
||
```bash
|
||
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
|
||
```
|
||
|
||
打开日志里的 `dsh web: http://127.0.0.1:3081/?token=…`,把 **`:3081` 改成 `:3080`** 后在浏览器打开一次(30 天 cookie),之后直接访问 `http://127.0.0.1:3080/`。
|
||
|
||
### 常用变体
|
||
|
||
```bash
|
||
# 钉版本
|
||
-e DSH_DIST_TAG=0.1.5-rc.1
|
||
|
||
# 改宿主机端口
|
||
-p 18080:18080 -e DSH_FORWARD_PORT=18080
|
||
|
||
# 其它机器用 IP 访问(追加在镜像名之后)
|
||
--trusted-host your-server-ip
|
||
```
|
||
|
||
## 三、打开浏览器
|
||
|
||
1. `docker logs dsh` 复制带 `?token=` 的 URL
|
||
2. 将其中的 `127.0.0.1:3081` 换成 `127.0.0.1:3080`(或 `服务器IP:3080`)
|
||
3. 打开**一次** → 写入 30 天 cookie
|
||
4. 之后直接访问 `http://127.0.0.1:3080/`
|
||
|
||
> 官方包**强制**浏览器认证,没有免 token 的开关。
|
||
|
||
## 目录
|
||
|
||
| 路径 | 作用 |
|
||
|------|------|
|
||
| `Dockerfile` | 工具链镜像(Node 24 / Python 3.11 / gcc / pnpm / rustup 引导) |
|
||
| `docker-compose.yml` | 端口、`dsh-data` 卷、工作区挂载 |
|
||
| `docker/entrypoint.sh` | 安装 `@deepseek-ai/dsh@latest` 并启动 web |
|
||
| `docker/ensure-rust.sh` | Rust 按需安装包装器 |
|
||
| `DEPLOY.md` | 完整部署说明(端口拓扑、环境变量、FAQ) |
|
||
|
||
## 许可
|
||
|
||
GPL-3.0 — 见 [LICENSE](LICENSE)。本部署封装仓库采用 GNU General Public License v3.0。上游 DeepSeek Harness 本身仍为 MIT;仅本仓库的 Docker/部署文件适用 GPL-3.0。
|