Back to home@daishengli

dsh-docker

使用 Docker 封装运行 deepseek-harness d的 Web 服务。容器内运行 dsh 和 Caddy,宿主机通过 3080 端口访问服务。

Stars
1
Language
Dockerfile
Created
Aug 27, 2026
Updated
Aug 27, 2026

Introduction

dsh-docker

使用 Docker 封装运行 dsh Web 服务。容器内运行 dsh 和 Caddy,宿主机通过 3080 端口访问服务。

快速开始

环境要求

  • Docker(Windows、macOS 或 Linux)
  • Docker Compose v2(使用 docker compose 命令)
  • 构建镜像和容器首次启动时可访问 Debian、npm 镜像及相关插件仓库

启动

在项目根目录执行:

docker compose up -d --build

然后打开:

http://localhost:3080

首次启动时,容器会安装或更新 Web profile 使用的插件,因此可能需要等待一段时间。查看实时日志:

docker compose logs -f dsh-docker

常用命令

# 查看容器状态
docker compose ps

# 前台启动并查看日志
docker compose up --build

# 停止服务,但保留容器
docker compose stop

# 停止并删除容器和网络
docker compose down

# 重启服务
docker compose restart

# 重新构建基础镜像和应用
docker compose build --pull
docker compose up -d

# 进入运行中的容器
docker compose exec dsh-docker bash

docker compose down 不会清空宿主机上的 dsh/workspace/ 目录。删除或清理这些目录前,请先做好备份。

项目结构

.
├── config/
│   ├── Caddyfile       # Caddy 反向代理配置
│   └── start.sh        # 容器启动脚本
├── dsh/
│   ├── profiles/web/   # dsh Web profile 及插件依赖
│   ├── settings.yaml   # dsh 设置
│   ├── storages/       # dsh 持久化数据
│   └── skin-center/    # 皮肤中心资源
├── workspace/          # dsh 工作区数据
├── Dockerfile          # Docker 镜像构建配置
└── docker-compose.yml  # 服务、端口和目录挂载配置

服务配置

端口转发

Compose 将宿主机 3080 映射到容器 3080。Caddy 在容器内监听 3080,并将请求转发到 dsh 的 3081 端口:

宿主机:3080 -> Caddy:3080 -> dsh:3081

修改 config/Caddyfile 后,需要重新构建镜像:

docker compose up -d --build

持久化目录

  • ./dsh:/root/.dsh:保存 dsh 配置、profile、插件缓存和存储数据。
  • ./workspace:/root/workspace:保存 dsh 工作区内容。
  • /etc/localtime:/etc/localtime:ro:尝试同步容器时区。

当前 Compose 文件没有额外的环境变量或 env_file 配置。

Web profile 插件

容器启动时,config/start.sh 会安装或更新以下插件:

  • dsh1024@latest
  • @xmanrui/dsh-im
  • @michengai/dsh-automation
  • @linxin666/dsh-client-ui-skin-center

插件安装依赖网络连接。由于部分插件在启动时从远程仓库获取,重启容器可能触发插件版本更新。

故障排查

查看完整日志:

docker compose logs -f dsh-docker

检查容器内服务:

docker compose exec dsh-docker curl http://localhost:3081
docker compose exec dsh-docker curl http://localhost:3080

验证 Caddy 配置:

docker compose exec dsh-docker caddy validate \
  --config /etc/caddy/Caddyfile \
  --adapter caddyfile

如果无法访问 http://localhost:3080,建议依次检查:

  1. docker compose ps 中容器是否处于运行状态。
  2. 日志中插件安装和 dsh 启动是否报错。
  3. 宿主机的 3080 端口是否已被其他程序占用。
  4. Docker Desktop 是否正常运行,以及构建和启动时是否能访问外部镜像源。

在 Windows Docker Desktop 上,如果 /etc/localtime 挂载导致启动报错,可以检查或暂时移除该时区挂载;它不是 dsh Web 服务的核心依赖。

许可证

本仓库主要提供 Docker 构建和运行配置。dsh、Caddy 及各插件分别遵循其上游项目的许可证。