ckriti/HuggingClaw
0
1FROM node:22-bookworm2 3SHELL ["/bin/bash", "-c"]4 5# Limit node memory6ENV NODE_OPTIONS="--max-old-space-size=512"7ENV PNPM_HOME="/pnpm"8ENV PATH="$PNPM_HOME:$PATH"9 10# -----------------------------11# Layer 1 — system deps12# -----------------------------13RUN echo "[build][layer1] installing deps..." \14 && apt-get update \15 && apt-get install -y --no-install-recommends \16 git \17 ca-certificates \18 curl \19 python3 \20 python3-pip \21 patch \22 && rm -rf /var/lib/apt/lists/* \23 && pip3 install --no-cache-dir --break-system-packages huggingface_hub \24 && corepack enable \25 && corepack prepare pnpm@10.23.0 --activate \26 && mkdir -p /app27 28WORKDIR /app29 30# -----------------------------31# patches32# -----------------------------33COPY patches /app/patches34 35# -----------------------------36# Layer 2 — build OpenClaw37# -----------------------------38RUN echo "[build][layer2] clone + build..." \39 && git clone --depth 1 https://github.com/openclaw/openclaw.git \40 && cd openclaw \41 \42 && echo "[build] applying patches..." \43 && for p in /app/patches/*.patch; do \44 if [ -f "$p" ]; then \45 patch -p1 < "$p" || echo "[build] patch skipped: $(basename $p)"; \46 fi; \47 done \48 \49 && echo "[build] installing deps (low memory mode)..." \50 && pnpm install \51 --frozen-lockfile \52 --prefer-offline \53 --child-concurrency=2 \54 --network-concurrency=2 \55 \56 && echo "[build] building core..." \57 && pnpm build \58 \59 && echo "[build] building UI..." \60 && pnpm ui:build \61 \62 && echo "[build] cleanup to reduce RAM usage" \63 && pnpm store prune64 65WORKDIR /app/openclaw66 67CMD ["node", "dist/entry.js"]