OpenWebUI / Dockerfile
naimulislam864's picture
Create Dockerfile
dd3c475 verified
# Use the official Open WebUI image
FROM ghcr.io/open-webui/open-webui:main
# ==============================================================
# 1. HUGGING FACE NETWORK REQUIREMENTS
# ==============================================================
# Hugging Face Spaces strictly routes external traffic to port 7860
ENV HOST=0.0.0.0
ENV PORT=7860
EXPOSE 7860
# ==============================================================
# 2. RESOURCE LIMITS (HF FREE TIER: 2 vCPU, 16GB RAM)
# ==============================================================
# Restrict to 2 workers to perfectly match the 2 free vCPUs (95% safety limit).
# This prevents the container from spawning too many threads and overloading the CPU.
ENV WEB_CONCURRENCY=2
ENV THREAD_POOL_SIZE=2
# Optimize memory allocation to prevent fragmentation
ENV MALLOC_ARENA_MAX=2
# ==============================================================
# 3. HUGGING FACE SECURITY/PERMISSION REQUIREMENTS
# ==============================================================
# Hugging Face forces Docker containers to run as a non-root user (UID 1000).
# We must take ownership of the application and data directories so OpenWebUI
# can successfully write its configuration and local database files.
RUN chown -R 1000:1000 /app/backend
# Redirect the home directory and cache to the writable data folder
# This ensures background models (like RAG embeddings) don't crash due to permissions
ENV HOME=/app/backend/data
ENV HF_HOME=/app/backend/data/cache
# Switch to the mandated Hugging Face user ID
USER 1000