Skip to content

Commit 3dbcd22

Browse files
author
root
committed
Merge branch 'fix/embedder-model-preload' into feat/helm-setup
2 parents 77d4fdd + 2de7bd8 commit 3dbcd22

39 files changed

Lines changed: 212832 additions & 1 deletion

chat_service/models/__init__.py

Whitespace-only changes.

docker-compose.gpu.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ services:
3232
container_name: docling_translation_service
3333
env_file:
3434
- ./docling_translation_service/.env
35+
36+
pdf_renderer_service:
37+
build:
38+
context: .
39+
dockerfile: ./pdf_renderer_service/Dockerfile
40+
container_name: pdf_renderer_service
41+
env_file:
42+
- ./pdf_renderer_service/.env
3543

3644
embedder_service:
3745
build:

docker-compose.yml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,15 @@ services:
4444
container_name: docling_translation_service
4545
env_file:
4646
- ./docling_translation_service/.env
47-
47+
48+
pdf_renderer_service:
49+
build:
50+
context: .
51+
dockerfile: ./pdf_renderer_service/Dockerfile
52+
container_name: pdf_renderer_service
53+
env_file:
54+
- ./pdf_renderer_service/.env
55+
4856
embedder_service:
4957
build:
5058
context: .
@@ -69,6 +77,7 @@ services:
6977
- pdf_processor_service
7078
- chat_service
7179
- docling_translation_service
80+
- pdf_renderer_service
7281
- embedder_service
7382
- minio
7483

embedder_service/Dockerfile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,18 @@ COPY embedder_service/requirements.txt .
1111

1212
RUN pip install --no-cache-dir -r requirements.txt
1313

14+
# Allow model to be configured at build time
15+
ARG EMBEDDING_MODEL="all-MiniLM-L6-v2"
16+
ENV EMBEDDING_MODEL=${EMBEDDING_MODEL}
17+
18+
# Set a predictable cache directory for sentence-transformers models
19+
ENV SENTENCE_TRANSFORMERS_HOME=/opt/models_cache
20+
21+
# Pre-download the sentence transformers model to avoid runtime download and cache permission issues
22+
RUN echo 'import os\nfrom sentence_transformers import SentenceTransformer\nSentenceTransformer(os.environ["EMBEDDING_MODEL"])' > download_model.py && \
23+
python download_model.py && \
24+
rm download_model.py
25+
1426
# Copy utils folder from root context into /app/utils
1527
COPY shared_utils ./shared_utils
1628

embedder_service/models/__init__.py

Whitespace-only changes.

nginx/example.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ PDF_EXTRACTOR_URL=http://pdf_extraction_service:8000
33
CHAT_URL=http://chat_service:8000
44
DOCLING_TRANSLATION_URL=http://docling_translation_service:8000
55
EMBEDDER_URL=http://embedder_service:8000
6+
PDF_RENDERER_URL=http://pdf_renderer_service:8000
67
MINIO_ENDPOINT=http://minio:9000

nginx/nginx.conf.template

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@ server {
2929
proxy_read_timeout 300;
3030
send_timeout 300;
3131
}
32+
33+
location /pdf_renderer/ {
34+
proxy_pass ${PDF_RENDERER_URL}/;
35+
36+
proxy_connect_timeout 300;
37+
proxy_send_timeout 300;
38+
proxy_read_timeout 300;
39+
send_timeout 300;
40+
}
3241

3342
location /embedder/ {
3443
proxy_pass ${EMBEDDER_URL}/;

pdf_renderer_service/Dockerfile

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
FROM python:3.13-slim
2+
3+
WORKDIR /app
4+
5+
ENV PYTHONPATH=/app/pdf_renderer_service:/app/shared_utils
6+
7+
RUN apt-get update && apt-get install -y build-essential && rm -rf /var/lib/apt/lists/*
8+
9+
COPY pdf_renderer_service/requirements.txt .
10+
11+
RUN pip install --no-cache-dir -r requirements.txt
12+
13+
COPY shared_utils ./shared_utils
14+
15+
COPY pdf_renderer_service ./pdf_renderer_service
16+
17+
EXPOSE 8000
18+
19+
# Start the FastAPI server
20+
CMD ["sh", "-c", "PYTHONPATH=/app/pdf_renderer_service uvicorn pdf_renderer_service.main:app --host 0.0.0.0 --port 8000"]

pdf_renderer_service/example.env

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# MinIO / S3-compatible storage
2+
MINIO_ENDPOINT=http://minio:9000
3+
MINIO_BUCKET=omnifiles
4+
MINIO_ACCESS_KEY=minioadmin
5+
MINIO_SECRET_KEY=minioadmin
6+
REDIS_URL="redis://redis:6379/0?decode_responses=True&protocol=3"

pdf_renderer_service/main.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from fastapi import FastAPI
2+
from routers import health, render, bypass
3+
import logging
4+
5+
# Set up logger
6+
logging.basicConfig(
7+
level=logging.INFO,
8+
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s"
9+
)
10+
11+
app = FastAPI(root_path="/pdf_renderer")
12+
13+
app.include_router(health.router)
14+
app.include_router(render.router)
15+
app.include_router(bypass.router)

0 commit comments

Comments
 (0)