agent-ui / Dockerfile
lvwerra's picture
lvwerra HF Staff
Fix Dockerfile for HF Spaces: run as uid 1000, copy hf CLI to /usr/local/bin
6d5daa8
FROM python:3.12-slim
WORKDIR /app
# Install Rust hf CLI for bucket sync (to /usr/local/bin so it's accessible to all users)
RUN apt-get update && apt-get install -y curl && \
curl -LsSf https://hf.co/cli/install.sh | bash && \
cp /root/.local/bin/hf /usr/local/bin/hf && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# Install dependencies
COPY pyproject.toml .
RUN pip install --no-cache-dir .
# Copy application code and default settings
COPY backend/ backend/
COPY frontend/ frontend/
COPY settings.json .
# HF Spaces runs as uid 1000
RUN useradd -m -u 1000 user && chown -R user:user /app
USER user
# HF Spaces uses port 7860
EXPOSE 7860
# HF_BUCKET: bucket path (e.g. lvwerra/agentui-storage) — sync only if set
# HF_BUCKET_TOKEN: HF token for bucket auth
CMD ["sh", "-c", "\
if [ -n \"$HF_BUCKET\" ] && [ -n \"$HF_BUCKET_TOKEN\" ]; then \
echo 'Syncing workspace from bucket...'; HF_TOKEN=$HF_BUCKET_TOKEN hf buckets sync hf://buckets/$HF_BUCKET /app/workspace || true; \
(while true; do sleep 60; echo '[bucket-sync] syncing...'; HF_TOKEN=$HF_BUCKET_TOKEN hf buckets sync /app/workspace hf://buckets/$HF_BUCKET; echo '[bucket-sync] done'; done) & \
fi && \
HF_TOKEN=${HF_TOKEN:-$LLM_API_KEY} exec python -m backend.main --port 7860 --no-browser --config-dir /app --workspace-dir /app/workspace --multi-user \
"]