devratharaisaar commited on
Commit
a81f8b2
Β·
verified Β·
1 Parent(s): 025c6f2

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +49 -47
Dockerfile CHANGED
@@ -1,66 +1,68 @@
1
- # OpenClaw on Hugging Face Spaces β€” δΌ˜εŒ–ζž„ε»ΊοΌˆv2οΌ‰
2
- # δΌ˜εŒ–η‚ΉοΌšnode η”¨ζˆ·ζž„ε»ΊοΌˆζΆˆι™€ chownοΌ‰γ€εˆεΉΆ RUN ε±‚οΌˆε‡ε°‘ε±‚εΌ€ι”€οΌ‰
3
  FROM node:22-bookworm
 
4
  SHELL ["/bin/bash", "-c"]
5
 
6
- # ── Layer 1 (root): η³»η»ŸδΎθ΅– + ε·₯ε…·οΌˆε…¨ιƒ¨εˆεΉΆδΈΊδΈ€ε±‚οΌ‰β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
7
- RUN echo "[build][layer1] System deps + tools..." && START=$(date +%s) \
8
- && apt-get update \
9
- && apt-get install -y --no-install-recommends git ca-certificates curl python3 python3-pip patch \
10
- && rm -rf /var/lib/apt/lists/* \
11
- && pip3 install --no-cache-dir --break-system-packages huggingface_hub \
12
- && corepack enable \
13
- && mkdir -p /app \
14
- && chown node:node /app \
15
- && mkdir -p /home/node/.openclaw/workspace /home/node/.openclaw/credentials \
16
- && chown -R node:node /home/node \
17
- && echo "[build][layer1] System deps + tools: $(($(date +%s) - START))s"
 
 
 
 
 
18
 
19
- # ── εˆ‡ζ’εˆ° node η”¨ζˆ·οΌˆεŽη»­ζ‰€ζœ‰ζ“δ½œιƒ½δ»₯ node θΊ«δ»½οΌŒζ— ιœ€ chown)───────────────
20
  USER node
21
  ENV HOME=/home/node
22
  WORKDIR /app
23
 
24
- # ── Layer 2 (node): Clone + Patch + Install + BuildοΌˆεˆεΉΆδΈΊδΈ€ε±‚οΌ‰β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
25
  COPY --chown=node:node patches /app/patches
26
- RUN echo "[build][layer2] Clone + install + build..." && START=$(date +%s) \
27
- && git clone --depth 1 https://github.com/openclaw/openclaw.git openclaw \
28
- && echo "[build] git clone: $(($(date +%s) - START))s" \
29
- && cd openclaw \
30
- && for p in /app/patches/*.patch; do \
31
- if [ -f "$p" ]; then \
32
- patch -p1 < "$p" \
33
- && echo "[build] patch applied: $(basename $p)"; \
34
- fi; \
35
- done \
36
- && T1=$(date +%s) \
37
- && pnpm install --frozen-lockfile \
38
- && echo "[build] pnpm install: $(($(date +%s) - T1))s" \
39
- && T2=$(date +%s) \
40
- && pnpm build \
41
- && echo "[build] pnpm build: $(($(date +%s) - T2))s" \
42
- && T3=$(date +%s) \
43
- && OPENCLAW_PREFER_PNPM=1 pnpm ui:build \
44
- && echo "[build] pnpm ui:build: $(($(date +%s) - T3))s" \
45
- && test -f dist/entry.js && echo "[build] OK dist/entry.js" \
46
- && test -f dist/plugin-sdk/index.js && echo "[build] OK dist/plugin-sdk/index.js" \
47
- && test -d extensions/telegram && echo "[build] OK extensions/telegram" \
48
- && test -d extensions/whatsapp && echo "[build] OK extensions/whatsapp" \
49
- && test -d dist/control-ui && echo "[build] OK dist/control-ui" \
50
- && mkdir -p /app/openclaw/empty-bundled-plugins \
51
- && node -e "console.log(require('./package.json').version)" > /app/openclaw/.version \
52
- && echo "[build] version: $(cat /app/openclaw/.version)" \
53
- && echo "[build][layer2] Total clone+install+build: $(($(date +%s) - START))s"
54
 
55
- # ── Layer 3 (node): Scripts + Config ──────────────────────────────────────────
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  COPY --chown=node:node scripts /home/node/scripts
57
  COPY --chown=node:node openclaw.json /home/node/scripts/openclaw.json.default
58
- RUN chmod +x /home/node/scripts/entrypoint.sh /home/node/scripts/sync_hf.py
59
 
 
 
 
 
60
  ENV NODE_ENV=production
61
  ENV OPENCLAW_BUNDLED_PLUGINS_DIR=/app/openclaw/empty-bundled-plugins
62
  ENV OPENCLAW_PREFER_PNPM=1
63
  ENV PATH="/home/node/.local/bin:$PATH"
 
64
  WORKDIR /home/node
65
 
66
- CMD ["/home/node/scripts/entrypoint.sh"]
 
1
+ # OpenClaw on Hugging Face Spaces β€” optimized build
 
2
  FROM node:22-bookworm
3
+
4
  SHELL ["/bin/bash", "-c"]
5
 
6
+ # ── Layer 1: System dependencies ─────────────────────────────
7
+ RUN echo "[build][layer1] Installing system dependencies..." \
8
+ && apt-get update \
9
+ && apt-get install -y --no-install-recommends \
10
+ git \
11
+ ca-certificates \
12
+ curl \
13
+ python3 \
14
+ python3-pip \
15
+ patch \
16
+ && rm -rf /var/lib/apt/lists/* \
17
+ && pip3 install --no-cache-dir --break-system-packages huggingface_hub \
18
+ && corepack enable \
19
+ && mkdir -p /app \
20
+ && chown node:node /app \
21
+ && mkdir -p /home/node/.openclaw/workspace /home/node/.openclaw/credentials \
22
+ && chown -R node:node /home/node
23
 
24
+ # Switch to node user
25
  USER node
26
  ENV HOME=/home/node
27
  WORKDIR /app
28
 
29
+ # ── Layer 2: Clone + Patch + Build ───────────────────────────
30
  COPY --chown=node:node patches /app/patches
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
+ RUN echo "[build][layer2] Clone + build OpenClaw..." \
33
+ && git clone --depth 1 https://github.com/openclaw/openclaw.git \
34
+ && cd openclaw \
35
+ \
36
+ # Apply patches safely (won't fail build)
37
+ && for p in /app/patches/*.patch; do \
38
+ if [ -f "$p" ]; then \
39
+ patch -p1 < "$p" || echo "[build] patch skipped: $(basename $p)"; \
40
+ fi; \
41
+ done \
42
+ \
43
+ && pnpm install --no-frozen-lockfile \
44
+ && pnpm build \
45
+ && OPENCLAW_PREFER_PNPM=1 pnpm ui:build \
46
+ \
47
+ # Verify build output
48
+ && test -f dist/entry.js \
49
+ && test -f dist/plugin-sdk/index.js \
50
+ && mkdir -p /app/openclaw/empty-bundled-plugins \
51
+ && node -e "console.log(require('./package.json').version)" > /app/openclaw/.version
52
+
53
+ # ── Layer 3: Scripts ─────────────────────────────────────────
54
  COPY --chown=node:node scripts /home/node/scripts
55
  COPY --chown=node:node openclaw.json /home/node/scripts/openclaw.json.default
 
56
 
57
+ RUN chmod +x /home/node/scripts/entrypoint.sh \
58
+ && chmod +x /home/node/scripts/sync_hf.py
59
+
60
+ # ── Environment ──────────────────────────────────────────────
61
  ENV NODE_ENV=production
62
  ENV OPENCLAW_BUNDLED_PLUGINS_DIR=/app/openclaw/empty-bundled-plugins
63
  ENV OPENCLAW_PREFER_PNPM=1
64
  ENV PATH="/home/node/.local/bin:$PATH"
65
+
66
  WORKDIR /home/node
67
 
68
+ CMD ["/home/node/scripts/entrypoint.sh"]