29.2 Docker 部署
29.2.1 Dockerfile 分析:多阶段构建、非 root 用户
# Dockerfile
FROM node:22-bookworm
# 安装 Bun(构建脚本需要)
RUN curl -fsSL https://bun.sh/install | bash
ENV PATH="/root/.bun/bin:${PATH}"
RUN corepack enable
WORKDIR /app
# 可选的额外 apt 包(通过构建参数控制)
ARG OPENCLAW_DOCKER_APT_PACKAGES=""
RUN if [ -n "$OPENCLAW_DOCKER_APT_PACKAGES" ]; then \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
--no-install-recommends $OPENCLAW_DOCKER_APT_PACKAGES && \
apt-get clean && rm -rf /var/lib/apt/lists/*; \
fi
# 依赖安装(利用 Docker 层缓存)
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY patches ./patches
COPY scripts ./scripts
RUN pnpm install --frozen-lockfile
# 构建
COPY . .
RUN OPENCLAW_A2UI_SKIP_MISSING=1 pnpm build
ENV OPENCLAW_PREFER_PNPM=1
RUN pnpm ui:build
ENV NODE_ENV=production
# 安全加固:非 root 用户运行
RUN chown -R node:node /app
USER node
# 默认命令:启动 Gateway
CMD ["node", "openclaw.mjs", "gateway", "--allow-unconfigured"]决策
原因
29.2.2 docker-compose.yml 解析
docker-compose.yml 解析配置
说明
29.2.3 Docker 沙箱(Dockerfile.sandbox)
Dockerfile.sandbox)29.2.4 环境变量配置
环境变量
说明
默认值
本节小结
Last updated