Spaces:
Running
Running
File size: 3,045 Bytes
100b909 e0d7d8e 16d8f48 184d59f bb59646 e0d7d8e 65adde0 e0b8344 e0d7d8e 100b909 f9b2402 e0d7d8e e0b8344 00411f6 16d8f48 21c0bd2 e8d0479 e0b8344 e570871 e8d0479 58f10f3 e0b8344 e8d0479 e0d7d8e e8d0479 58f10f3 e0d7d8e e8d0479 e0b8344 21c0bd2 e0b8344 21c0bd2 9c9e8e9 e0b8344 16d8f48 e8d0479 e0d7d8e 16d8f48 e0b8344 dd78213 a4fb13f 21c0bd2 | 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 | # syntax=docker/dockerfile:1
# ββ Stage 1: Compile the Rust sync helper βββββββββββββββββββββββββββββββββββββ
FROM rust:1.94.0-slim-bookworm AS builder
WORKDIR /app
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential pkg-config ca-certificates \
&& rm -rf /var/lib/apt/lists/*
COPY Cargo.toml ./
COPY src ./src
RUN cargo build --release
# ββ Stage 2: Runtime βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
FROM mcr.microsoft.com/playwright:v1.51.0-jammy AS runtime
USER root
# ββ 2a. System deps ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git tini ca-certificates curl \
cmake make build-essential \
python3 python3-venv \
&& rm -rf /var/lib/apt/lists/*
# ββ 2b. Install Node 22 (OpenClaw requires β₯22; Playwright ships Node 20) βββββ
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
&& apt-get install -y --no-install-recommends nodejs \
&& rm -rf /var/lib/apt/lists/*
# ββ 2c. Install OpenClaw globally βββββββββββββββββββββββββββββββββββββββββββββ
RUN SHARP_IGNORE_GLOBAL_LIBVIPS=1 \
npm_config_cache=/tmp/npm-cache \
npm install -g openclaw@latest \
&& rm -rf /tmp/npm-cache
# ββ 2d. Install LiteLLM into an isolated venv βββββββββββββββββββββββββββββββββ
RUN python3 -m venv /opt/litellm-venv \
&& /opt/litellm-venv/bin/pip install --no-cache-dir "litellm[proxy]"
ENV PATH="/opt/litellm-venv/bin:$PATH"
# ββ 2e. Copy Rust sync binary + startup script ββββββββββββββββββββββββββββββββ
COPY --from=builder /app/target/release/openclaw-hf-sync /usr/local/bin/openclaw-hf-sync
COPY start.sh /app/start.sh
RUN chmod +x /usr/local/bin/openclaw-hf-sync /app/start.sh
# ββ 2f. Create runtime user (uid 1000) ββββββββββββββββββββββββββββββββββββββββ
RUN set -eux; \
if ! getent passwd 1000 >/dev/null; then \
groupadd -g 1000 user; \
useradd -m -u 1000 -g 1000 -s /bin/bash user; \
fi; \
mkdir -p /home/user/.openclaw /home/user/app; \
chown -R 1000:1000 /home/user
ENV OPENCLAW_API_PORT=7860 \
OPENCLAW_WS_PORT=7861 \
HOME=/home/user \
SHARP_IGNORE_GLOBAL_LIBVIPS=1
EXPOSE 7860 7861
WORKDIR /home/user/app
USER 1000:1000
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/openclaw-hf-sync"]
CMD ["/app/start.sh"] |