forked from open-webui/open-webui
		
	Dockerfile optimisation
This commit is contained in:
		
							parent
							
								
									7ae4669f35
								
							
						
					
					
						commit
						50bec32153
					
				
					 1 changed files with 42 additions and 35 deletions
				
			
		
							
								
								
									
										77
									
								
								Dockerfile
									
										
									
									
									
								
							
							
						
						
									
										77
									
								
								Dockerfile
									
										
									
									
									
								
							|  | @ -1,12 +1,18 @@ | ||||||
| # syntax=docker/dockerfile:1 | # syntax=docker/dockerfile:1 | ||||||
| 
 | 
 | ||||||
| FROM node:alpine as build | ######## WebUI frontend ######## | ||||||
|  | FROM node:21-bullseye-slim as build | ||||||
| 
 | 
 | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| 
 | 
 | ||||||
|  | RUN apt-get update \  | ||||||
|  |     && apt-get install -y --no-install-recommends wget \  | ||||||
|  |     # cleanup | ||||||
|  |     && rm -rf /var/lib/apt/lists/* | ||||||
|  | 
 | ||||||
| # wget embedding model weight from alpine (does not exist from slim-buster) | # wget embedding model weight from alpine (does not exist from slim-buster) | ||||||
| RUN wget "https://chroma-onnx-models.s3.amazonaws.com/all-MiniLM-L6-v2/onnx.tar.gz" -O - | \ | #RUN wget "https://chroma-onnx-models.s3.amazonaws.com/all-MiniLM-L6-v2/onnx.tar.gz" -O - | \ | ||||||
|     tar -xzf - -C /app | #    tar -xzf - -C /app | ||||||
| 
 | 
 | ||||||
| COPY package.json package-lock.json ./ | COPY package.json package-lock.json ./ | ||||||
| RUN npm ci | RUN npm ci | ||||||
|  | @ -14,54 +20,55 @@ RUN npm ci | ||||||
| COPY . . | COPY . . | ||||||
| RUN npm run build | RUN npm run build | ||||||
| 
 | 
 | ||||||
| 
 | ######## WebUI backend ######## | ||||||
| FROM python:3.11-slim-bookworm as base | FROM python:3.11-slim-bookworm as base | ||||||
| 
 | 
 | ||||||
| ENV ENV=prod | ## Basis ## | ||||||
| ENV PORT "" | ENV ENV=prod \ | ||||||
|  |     PORT=8080 | ||||||
| 
 | 
 | ||||||
| ENV OLLAMA_BASE_URL "/ollama" | ## Basis URL Config ## | ||||||
|  | ENV OLLAMA_BASE_URL="/ollama" \ | ||||||
|  |     OPENAI_API_BASE_URL="" | ||||||
| 
 | 
 | ||||||
| ENV OPENAI_API_BASE_URL "" | ## API Key and Security Config ## | ||||||
| ENV OPENAI_API_KEY "" | ENV OPENAI_API_KEY="" \ | ||||||
|  |     WEBUI_SECRET_KEY="" \ | ||||||
|  |     SCARF_NO_ANALYTICS=true \ | ||||||
|  |     DO_NOT_TRACK=true | ||||||
| 
 | 
 | ||||||
| ENV WEBUI_SECRET_KEY "" | #### Preloaded models ########################################################## | ||||||
|  | ## whisper TTS Settings ## | ||||||
|  | ENV WHISPER_MODEL="base" \ | ||||||
|  |     WHISPER_MODEL_DIR="/app/backend/data/cache/whisper/models" | ||||||
| 
 | 
 | ||||||
| ENV SCARF_NO_ANALYTICS true | ## RAG Embedding Model Settings ## | ||||||
| ENV DO_NOT_TRACK true |  | ||||||
| 
 |  | ||||||
| ######## Preloaded models ######## |  | ||||||
| # whisper TTS Settings |  | ||||||
| ENV WHISPER_MODEL="base" |  | ||||||
| ENV WHISPER_MODEL_DIR="/app/backend/data/cache/whisper/models" |  | ||||||
| 
 |  | ||||||
| # RAG Embedding Model Settings |  | ||||||
| # any sentence transformer model; models to use can be found at https://huggingface.co/models?library=sentence-transformers | # any sentence transformer model; models to use can be found at https://huggingface.co/models?library=sentence-transformers | ||||||
| # Leaderboard: https://huggingface.co/spaces/mteb/leaderboard  | # Leaderboard: https://huggingface.co/spaces/mteb/leaderboard  | ||||||
| # for better persormance and multilangauge support use "intfloat/multilingual-e5-large" (~2.5GB) or "intfloat/multilingual-e5-base" (~1.5GB) | # for better persormance and multilangauge support use "intfloat/multilingual-e5-large" (~2.5GB) or "intfloat/multilingual-e5-base" (~1.5GB) | ||||||
| # IMPORTANT: If you change the default model (all-MiniLM-L6-v2) and vice versa, you aren't able to use RAG Chat with your previous documents loaded in the WebUI! You need to re-embed them. | # IMPORTANT: If you change the default model (all-MiniLM-L6-v2) and vice versa, you aren't able to use RAG Chat with your previous documents loaded in the WebUI! You need to re-embed them. | ||||||
| ENV RAG_EMBEDDING_MODEL="all-MiniLM-L6-v2" | ENV RAG_EMBEDDING_MODEL="all-MiniLM-L6-v2" \ | ||||||
| # device type for whisper tts and embbeding models - "cpu" (default), "cuda" (nvidia gpu and CUDA required) or "mps" (apple silicon) - choosing this right can lead to better performance |     # device type for whisper tts and embbeding models - "cpu" (default), "cuda" (nvidia gpu and CUDA required) or "mps" (apple silicon) - choosing this right can lead to better performance | ||||||
| ENV RAG_EMBEDDING_MODEL_DEVICE_TYPE="cpu" |     RAG_EMBEDDING_MODEL_DEVICE_TYPE="cpu" \ | ||||||
| ENV RAG_EMBEDDING_MODEL_DIR="/app/backend/data/cache/embedding/models" |     RAG_EMBEDDING_MODEL_DIR="/app/backend/data/cache/embedding/models" \ | ||||||
| ENV SENTENCE_TRANSFORMERS_HOME $RAG_EMBEDDING_MODEL_DIR |     SENTENCE_TRANSFORMERS_HOME="/app/backend/data/cache/embedding/models" | ||||||
| 
 | #### Preloaded models ########################################################## | ||||||
| ######## Preloaded models ######## |  | ||||||
| 
 | 
 | ||||||
| WORKDIR /app/backend | WORKDIR /app/backend | ||||||
| 
 | 
 | ||||||
| # install python dependencies | # install python dependencies | ||||||
| COPY ./backend/requirements.txt ./requirements.txt | COPY ./backend/requirements.txt ./requirements.txt | ||||||
| 
 | 
 | ||||||
| RUN apt-get update && apt-get install ffmpeg libsm6 libxext6  -y | RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --no-cache-dir \ | ||||||
|  |     && pip3 install -r requirements.txt --no-cache-dir | ||||||
| 
 | 
 | ||||||
| RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --no-cache-dir | #  install required packages | ||||||
| RUN pip3 install -r requirements.txt --no-cache-dir |  | ||||||
| 
 |  | ||||||
| # Install pandoc and netcat |  | ||||||
| # RUN python -c "import pypandoc; pypandoc.download_pandoc()" |  | ||||||
| RUN apt-get update \ | RUN apt-get update \ | ||||||
|     && apt-get install -y pandoc netcat-openbsd \ |     # Install pandoc and netcat | ||||||
|  |     && apt-get install -y --no-install-recommends pandoc netcat-openbsd \ | ||||||
|  |     # for RAG OCR | ||||||
|  |     && apt-get install -y --no-install-recommends ffmpeg libsm6 libxext6 \ | ||||||
|  |     # cleanup | ||||||
|     && rm -rf /var/lib/apt/lists/* |     && rm -rf /var/lib/apt/lists/* | ||||||
| 
 | 
 | ||||||
| # preload embedding model | # preload embedding model | ||||||
|  | @ -70,8 +77,8 @@ RUN python -c "import os; from chromadb.utils import embedding_functions; senten | ||||||
| RUN python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='auto', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])" | RUN python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='auto', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])" | ||||||
| 
 | 
 | ||||||
| # copy embedding weight from build | # copy embedding weight from build | ||||||
| RUN mkdir -p /root/.cache/chroma/onnx_models/all-MiniLM-L6-v2 | # RUN mkdir -p /root/.cache/chroma/onnx_models/all-MiniLM-L6-v2 | ||||||
| COPY --from=build /app/onnx /root/.cache/chroma/onnx_models/all-MiniLM-L6-v2/onnx | # COPY --from=build /app/onnx /root/.cache/chroma/onnx_models/all-MiniLM-L6-v2/onnx | ||||||
| 
 | 
 | ||||||
| # copy built frontend files | # copy built frontend files | ||||||
| COPY --from=build /app/build /app/build | COPY --from=build /app/build /app/build | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jannik Streidl
						Jannik Streidl