# deepseek-harness-docker **Repository Path**: wangming123456/deepseek-harness-docker ## Basic Information - **Project Name**: deepseek-harness-docker - **Description**: 支持通过docker来构建deepseek-harness - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-19 - **Last Updated**: 2026-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DeepSeek Harness (DSH) — Docker 镜像构建 --- ## 目录 - [项目结构](#项目结构) - [构建方式](#构建方式) - [构建(标准)](#构建标准) - [构建(含代码修复)](#构建含代码修复) - [构建产物](#构建产物) - [私有仓库设置](#私有仓库设置) - [K8s 部署](#k8s-部署) - [常见构建问题](#常见构建问题) --- ## 项目结构 ``` ├── Dockerfile # 多阶段构建(build → runtime) ├── docker-entrypoint.sh # 容器入口脚本 ├── patch-node-pty.js # node-pty alpine 补丁 ├── test.yaml # K8s 部署清单(Deployment + Service + 其他资源) ├── k8s/ # K8s 资源分文件 ├── dsh/ │ └── deepseek-harness-master/ # DSH 源码(pnpm workspace monorepo) └── README.md # 本文档 ``` --- ## 构建方式 本项目的构建目标是**内网环境**,有若干特殊处理: | 问题 | 解决方案 | |------|----------| | `node-addon-require-builtin` 无 musl/alpine 原生绑定 | entrypoint 加 `--expose-internals` 绕过 | | `node-pty` 无 Linux prebuild,内网 DNS 不通无法 `apk add python3 make g++` | `patch-node-pty.js` patch 为 stub | | 内网 npm 仓库 | 构建阶段配置 registry | | DSH 配置/凭据 API(privileged methods)默认锁 loopback | 修改源码改用 `trustedHosts` 校验 | --- ## 构建(标准) ```bash # 在项目根目录执行 docker build -t registry/deepseek-harness:v1.0 -f Dockerfile . ``` Dockerfile 处理流程: 1. 设置内网 npm registry 2. `pnpm install --frozen-lockfile --ignore-scripts` — 安装依赖(跳过 postinstall) 3. `patch-node-pty.js` — 对 node-pty 打 stub 补丁 4. `pnpm run build` — 编译(tsc + tsdown + vite 前端) 5. 将产物复制到 runtime 镜像(node:22-alpine) ### 环境变量 | 变量 | 默认值 | 说明 | |------|--------|------| | `DSH_HOME` | `/data/dsh` | DSH 数据目录 | | `DSH_WEB_PORT` | `3080` | Web 服务端口 | | `DSH_TRUSTED_HOSTS` | _(空)_ | 信任的访问地址,格式 `host:port`,逗号分隔 | --- ## 构建(含代码修复) 如果对 DSH 源码有修改(例如 index.ts 的 privileged 方法限制调整),需要先**逆序处理**以避免缓存问题: ```bash # 1. 从 DSH 源码清除已构建产物 cd dsh/deepseek-harness-master rm -rf apps/web/dist rm -rf apps/cli/lib # 2. 回到项目根目录重新构建 cd ../.. docker build --no-cache -t registry/deepseek-harness:v2.xx -f Dockerfile . ``` > 构建命令每次都会复制完整源码到构建上下文,所以源码改动会自动进入构建,不需要额外参数。但如果 tsc 编译缓存命中了旧产物,用 `--no-cache` 或手动清理。 --- ## 构建产物 ```bash # 打标签 docker tag registry/deepseek-harness:v1.0 # 推送到私有仓库 docker push registry/deepseek-harness:v1.0 ``` --- ## K8s 部署 K8s 部署请参阅 [README-k8s.md](./README-k8s.md)。 快速修改镜像版本: ```bash # 直接编辑 test.yaml 或 deployment.yaml 中的 image 字段 # image: xxxxxx/pcc.proxy-image/deepseek-harness:v1.0 ``` 然后通过 Kuboard 或 `kubectl apply -f` 更新。 ---