Spaces:
Paused
Paused
File size: 2,666 Bytes
c7216e1 62a2ca4 c7216e1 3791641 c7216e1 5b1f9e0 c7216e1 d4f5694 5b1f9e0 c7216e1 3791641 c7216e1 ea105c1 5b1f9e0 1b324dc c7216e1 029b98d c7216e1 ea105c1 e3a47f1 c7216e1 ea105c1 e3a47f1 c7216e1 5b1f9e0 c7216e1 97cc2b9 c7216e1 97cc2b9 e079c7f c7216e1 2590560 c7216e1 97cc2b9 c7216e1 e079c7f c7216e1 e079c7f c7216e1 e079c7f 3791641 97cc2b9 e079c7f 3a37f03 029b98d 86f0a0a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | # 使用 Node.js 22 (Debian Bullseye)
FROM node:22-bullseye
# 1. 补全浏览器、SSH、时区及 Python 编译工具
# - DEBIAN_FRONTEND=noninteractive: 防止 tzdata 等安装时由于交互式提示挂起
# - chromium: 系统级内核,其路径 /usr/bin/chromium 可被 OpenClaw 自动识别
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
git \
cmake \
python3 \
python3-pip \
python3-setuptools \
python3-wheel \
lsof \
build-essential \
openssh-client \
tzdata \
chromium \
libnss3 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libxkbcommon0 \
libxcomposite1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libasound2 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libx11-xcb1 \
libxcb1 \
libglib2.0-0 \
libgtk-3-0 \
fonts-liberation \
fonts-noto-color-emoji \
libxss1 \
xvfb \
&& rm -rf /var/lib/apt/lists/*
# 2. 锁定 pnpm 版本确保构建一致性
RUN corepack enable && corepack prepare pnpm@9.0.0 --activate
# 3. 环境变量 (自适应 Python 路径,去除硬编码版本号)
# - DISPLAY=:99 配合 xvfb 使用,为浏览器提供虚拟屏幕,解决 X11 Missing 问题
# - XDG_RUNTIME_DIR 消除 Chrome 启动时的目录缺失警告
ENV TZ=Asia/Shanghai \
DISPLAY=:99 \
XDG_RUNTIME_DIR=/tmp/runtime-openclaw \
SKIP_DOWNLOAD_LLAMA_CPP_BINARIES=1 \
NODE_LLAMA_CPP_SKIP_DOWNLOAD=1 \
PYTHONUSERBASE=/app/.local \
OPENCLAW_STATE_DIR=/app/.openclaw \
PATH="/app/.local/bin:${PATH}"
# 4. 目录预设与权限 (使用 node 用户对齐标准 Shell 环境)
RUN mkdir -p /home/node/.ssh && \
chmod 700 /home/node/.ssh && \
chown -R node:node /home/node
WORKDIR /app
# 5. 代码拉取及权限同步
RUN git clone https://github.com/superxuu/HF_clawbot.git . && \
mkdir -p /app/.openclaw && \
chown -R node:node /app
# 切换到非 root 用户 (node)
USER node
# 6. 使用 --user 安装以确保 AI 运行时路径兼容
RUN pip3 install --no-cache-dir --user paramiko fabric
# 7. 构建流程 (驱动重定向与环境适配已并入代码,此处仅负责编译)
RUN pnpm install --no-frozen-lockfile
RUN pnpm store prune
RUN pnpm build
RUN pnpm ui:build
EXPOSE 7860
# 关键环境变量:设置生产环境与端口
ENV NODE_ENV=production PORT=7860
# 8. 启动 (使用 xvfb-run 包装启动,为浏览器提供活动的虚拟 X Server 环境)
CMD ["sh", "-c", "export OPENCLAW_GATEWAY_PORT=${PORT:-7860}; xvfb-run -a node scripts/run-node.mjs gateway --port ${PORT:-7860} --force --allow-unconfigured"]
|