使用docker安装node.js和deepseek harness

最新的deepseek harness出来了,这个工具非常强大,看起来是一个类似官方网页版的聊天工具,其实他的插件功能能访问本地和网络io,可以实现主流ai编程工具、龙虾的功能。

但是我不想在本地装node.js,太多烂七八糟的软件了,使用docker来搞个虚拟机安装node.js。基本上就是下载docker,安装node.js,安装deepseek harness。

docker里面的镜像和容器,跟git差不多,镜像就是服务器的仓库,容器就是本地的备份,平时都是在容器里面搞,确认了就保存到镜像里面去。容器可以随时删除,再从镜像拉就行了。

1 下载安装docker windows版本和安装node.js

1.1 首次启动会报错Virtualization support not detected,运行如下命令启用虚拟机平台然后重启电脑:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

1.2 重启后如果提示虚拟机wsl失败running wslexec: An error occurred while running the command,安装虚拟机:

wsl --install --no-distribution

1.3 拉取镜像:

docker pull node:24-alpine

如果失败配置docker设置中docker engine的镜像地址:

"registry-mirrors": [

"https://docker.m.daocloud.io"

]

1.4 启动后验证node.js:

docker run -it --rm --entrypoint sh node:24-alpine

node -v

npm -v

2 进入docker中,启动node.js容器的shell,名字为:dsh-builder,后续需要保存镜像

docker run -it --name dsh-builder -p 3080:3080 --entrypoint sh node:24-alpine

#docker run -it --rm -p 3080:3080 --entrypoint sh node:24-alpine 一次性运行的命令

3 安装依赖,需要编译dsh

apk add --no-cache python3 py3-pip make g++ git

4 全局安装dsh,不用每次都安装一次

npm install -g @deepseek-ai/dsh

5 不要退出当前docker shell,另开一个cmd窗口,运行如下命令保存镜像为 my-dsh:latest :

docker commit dsh-builder my-dsh:latest

6 使用保存的镜像开启dsh服务,可以正常的镜像内部运行:

docker run -it --rm -p 3080:3080 -e DEEPSEEK_API_KEY="你的API密钥" --entrypoint node my-dsh:latest --expose-internals /usr/local/bin/dsh web

7 win10中打开浏览器http://127.0.0.1:3080 没有显示dsh服务,是因为dsh只连接了内部的127.0.0.1,外部ip地址禁止接入了,修改dsh代码删掉限制:

sed -i 's/if (options.host === "0.0.0.0") program.error(\^;*;/\/\/ &/' /usr/local/lib/node_modules/@deepseek-ai/dsh/node_modules/@deepseek-ai/dsh-web-app/lib/startup.js

改完了记得另开一个cmd终端保存容器:

docker commit -m "allow host 0.0.0.0" dsh-modified my-dsh:latest

8 现在在win10系统中打开:http://127.0.0.1:3080,可以看到dsh的页面了,可以正常使用了。

9 后续再使用的时候:

从镜像my-dsh:latest,新建并运行容器名为dsh-modified:

docker run -it --name dsh-modified -p 3080:3080 --entrypoint sh my-dsh:latest

运行dsh:

node --expose-internals /usr/local/bin/dsh web --host 0.0.0.0 &

新开cmd窗口保存容器(会生成当时容器的快照,下次打开容器会进入当前的快照):

docker commit dsh-modified my-dsh:latest

下次再进入同一容器并保存操作:

docker exec -it dsh-modified sh

docker commit dsh-modified my-dsh:latest

一次性打开容器不保存:

docker run -it --rm -p 3080:3080 --entrypoint node my-dsh:latest --expose-internals /usr/local/bin/dsh web --host 0.0.0.0

开启容器

docker start dsh-modified

停止容器

docker stop dsh-modified

10 其他命令:

列举所有容器

docker ps -a

列举所有镜像

docker images

删除容器

docker rm -f dsh-modified

最后的效果:

相关推荐
爱丶不疚2 小时前
搞不清 CommonJS 与 ESM,你是否也有这些疑问🤔
前端·node.js
Czzzzlq4 小时前
Deepseek Harness桌面端
deepseek·deepseekharness·dsh
cyadyx5 小时前
Vite 比 Webpack 构建效率更高
前端·webpack·node.js·vite
烂蜻蜓21 小时前
Node.js入门教程(十一):异步编程
node.js
Sca_杰1 天前
微信客服API对接速通
javascript·node.js
FungLeo1 天前
Node 后端实战 · D1 那些坑:100 参数上限逼出的批量写入重构
node.js·serverless·d1 数据库·sqli
谦卑a1 天前
nodejs安装保姆级教程
前端·javascript·node.js·个人开发
烂蜻蜓1 天前
Node.js入门教程(十八):Stream(流)
node.js
东方小月2 天前
从零开发一个 Coding Agent(九):实现 Agent 的工具调用闭环
人工智能·前端框架·node.js