openoperator / Dockerfile
Leon4gr45's picture
Upload folder using huggingface_hub
6ab316e verified
# Use Python 3.11 image for better compatibility
FROM python:3.11-slim-bookworm
LABEL description="Dockerfile for Agent-Zero on Hugging Face Spaces"
# Avoid prompts during package installation
ENV DEBIAN_FRONTEND=noninteractive
# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
openssl \
procps \
zstd \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# Install uv
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:$PATH"
# Use the official Ollama installation script
RUN curl -fsSL https://ollama.com/install.sh | sh
# Clone the agent-zero repository
RUN git clone --branch fix-initialize-mcp-nameerror https://github.com/JsonLord/agent-zero.git /app
# Copy the local files to overwrite or add to the repository
COPY requirements.txt /app/requirements.txt
COPY run_ui.py /app/run_ui.py
COPY models.py /app/models.py
COPY whisper.py /app/python/helpers/whisper.py
COPY webui/js/api.js /app/webui/js/api.js
COPY webui/index.html /app/webui/index.html
COPY webui/js/index.js /app/webui/js/index.js
COPY preload.py /app/preload.py
COPY python/extensions/system_prompt/_10_system_prompt.py /app/python/extensions/system_prompt/_10_system_prompt.py
COPY python/helpers/searxng.py /app/python/helpers/searxng.py
COPY python/helpers/settings.py /app/python/helpers/settings.py
COPY python/helpers/csrf.py /app/python/helpers/csrf.py
COPY python/api/csrf_token.py /app/python/api/csrf_token.py
COPY start.sh /app/start.sh
COPY python/tools/search_engine.py /app/python/tools/search_engine.py
COPY initialize.py /app/initialize.py
# New API handlers
COPY python/api/health.py /app/python/api/health.py
COPY python/api/chat.py /app/python/api/chat.py
COPY python/api/stream.py /app/python/api/stream.py
COPY python/api/set.py /app/python/api/set.py
COPY python/api/get.py /app/python/api/get.py
COPY python/api/docs.py /app/python/api/docs.py
# New extensions
COPY python/extensions/response_stream/_30_api_stream.py /app/python/extensions/response_stream/_30_api_stream.py
COPY python/extensions/reasoning_stream/_30_api_stream.py /app/python/extensions/reasoning_stream/_30_api_stream.py
# Set the working directory for the next steps
WORKDIR /app
# --- DEFINITIVE FIX: GENERATE KEY AT BUILD TIME ---
RUN echo "FLASK_SECRET_KEY=$(openssl rand -hex 32)" > .env
# Install Python dependencies from requirements.txt using uv
RUN uv pip install --system --no-cache -r requirements.txt
# Pre-download the required spaCy model during the build
RUN python -m spacy download en_core_web_sm
# Manually create the 'ollama' group
RUN groupadd -r ollama
# Create a non-root user for security
RUN useradd --create-home --shell /bin/bash user
# Add the user to the 'ollama' group so it can use the service
RUN usermod -aG ollama user
# Grant the non-root user ownership of the application directory
RUN chown -R user:user /app
# Make start.sh executable
RUN chmod +x /app/start.sh
# Switch to the non-root user
USER user
# Set the final working directory
WORKDIR /app
# Expose the application port (Hugging Face standard is 7860)
EXPOSE 7860
# Command to start the services
CMD ["/app/start.sh"]