🚚第一阶段:在 Windows(宿主机)上准备资源

你需要先在 Windows 上下载好源码和构建镜像所需的基础文件。

1. 下载 OpenClaw 源码

OpenClaw 的 GitHub 仓库通常包含构建 Docker 镜像所需的 Dockerfile

  1. 访问 GitHub:在 Windows 浏览器打开 OpenClaw GitHub 仓库
  2. 下载源码:点击绿色的 Code 按钮 -> Download ZIP
  3. 保存位置:假设你把它下载到了 D:\Downloads\openclaw-main.zip
2. (关键) 准备基础镜像

OpenClaw 的 Dockerfile 通常基于 node:22-bookworm 或类似的 Linux 镜像。因为 WSL 无法联网拉取这个基础镜像,你必须在 Windows 上先把它拉下来,然后导出成文件。

打开 Windows PowerShell(非管理员即可),执行:

# 1. 拉取基础镜像 (请查看 OpenClaw 的 Dockerfile 第一行确认具体是哪个镜像,这里以 node:22 为例)
docker pull node:22-bookworm

# 2. 将该镜像导出为 tar 包
docker save -o D:\Downloads\base-node22.tar node:22-bookworm

📂 第二阶段:将文件传输进 WSL

我们需要把刚才下载的文件“搬运”到 WSL 的文件系统中。

  1. 打开 WSL 终端
  2. 进入挂载目录:Windows 的磁盘通常挂载在 /mnt/ 下。
    # 进入 D 盘(假设你文件在 D 盘)
    cd /mnt/d/Downloads
    
    # 确认文件是否存在
    ls
    # 你应该能看到 openclaw-main.zip 和 base-node22.tar
  3. 复制到 WSL 家目录
    # 创建工作目录
    mkdir -p ~/build_env
    cd ~
    
    # 复制文件过来
    cp /mnt/d/Downloads/openclaw-main.zip ~/build_env/
    cp /mnt/d/Downloads/base-node22.tar ~/build_env/

🛠️ 第三阶段:在 WSL 内离线安装

现在回到 WSL 的纯离线环境中进行操作。

1. 导入基础镜像

既然 WSL 连不上网,我们就把刚才传进来的 tar 包加载到 Docker 里。

# 导入镜像
sudo docker load -i ~/build_env/base-node22.tar

# 验证是否导入成功
sudo docker images
# 此时你应该能看到 node:22-bookworm 在列表里
2. 解压源码
cd ~/build_env
# 安装 unzip (如果 WSL 极简安装没带这个命令,需 apt install unzip,若 apt 也挂了需同样方式下载 unzip 包)
unzip openclaw-main.zip
cd openclaw-main
3. 修改 Dockerfile (关键步骤)

因为基础镜像是你本地导入的,我们需要确保 Dockerfile 能识别它,并且切断构建过程中试图联网的行为(如 apt-get update 或 npm install)。

  1. 查看 Dockerfile
    cat Dockerfile
  2. 修改策略
    • 确认基础镜像名称:确保 FROM node:22-bookworm 这一行和你刚才导入的镜像名称一致。
    • 关于依赖安装:如果 Dockerfile 里有 RUN npm install,在离线环境下一定会失败
      • 解决方案:你需要在 Windows 上把 node_modules 下载好(非常麻烦),或者修改 Dockerfile,注释掉联网下载的步骤,改为手动在 WSL 里安装依赖(见下文替代方案)。

💡 替代方案:直接在 WSL 内运行(推荐内网环境)

既然内网构建 Docker 镜像非常痛苦(主要是依赖包下载问题),在内网环境下,最稳妥 的方式其实是:不在 WSL 里构建镜像,而是直接在 WSL 里安装 Node.js 运行 OpenClaw

这样可以完全绕过 Docker 的构建过程。

步骤如下:
  1. 在 Windows 下载 Node.js 离线包

    • 去 Node.js 官网下载 Linux 二进制包 (.tar.xz),例如 node-v22.x.x-linux-x64.tar.xz
    • 传到 WSL 的 /mnt/d/Downloads/
  2. 在 WSL 安装 Node.js

    cd /mnt/d/Downloads
    # 解压
    tar -xf node-v22.*.tar.xz
    # 移动到新位置
    sudo mv node-v22.* /usr/local/nodejs
    
    # 配置环境变量 (添加到 ~/.bashrc)
    echo 'export PATH=$PATH:/usr/local/nodejs/bin' >> ~/.bashrc
    source ~/.bashrc
    
    # 验证
    node -v
  3. 准备 OpenClaw 依赖 (最难点)
    由于 npm install 需要联网,你在 WSL 里直接运行会报错。你有两个选择:

    • 选择 A (手动拷贝):在 Windows 上创建一个空文件夹,运行 npm install openclaw,把生成的 node_modules 文件夹整个复制到 WSL 的 OpenClaw 目录下。
    • 选择 B (使用预编译包):如果 OpenClaw 提供预编译的二进制文件(Binary),直接下载运行即可,无需 npm。

总结建议

鉴于你是内网环境:

  1. 如果你必须用 Docker

    • Windows 下载源码 ZIP + docker pull 基础镜像并导出。
    • WSL 导入基础镜像 -> 解压源码 -> 修改 Dockerfile (注释掉所有联网安装命令) -> docker build
    • 警告:这通常会导致运行报错,因为缺少依赖包。
  2. 如果你只是想跑起来 (推荐)

    • 放弃 Docker 构建。
    • 在 Windows 下载好 Node.js Linux 版 和 OpenClaw 源码
    • 在 Windows 上把 node_modules 依赖包下载全。
    • 全部扔进 WSL,配置好 Node.js 路径,直接运行 node 命令启动。

最核心的痛点是 npm install 的离线依赖包。如果公司内网没有私有 npm 仓库,建议找一台能上网的机器,把 node_modules 打好包,再拷贝进去。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐