Docker stuff

This commit is contained in:
2025-10-02 20:21:48 -04:00
parent 99c98b7e42
commit a640ae5fed
5 changed files with 94 additions and 4 deletions

16
.dockerignore Normal file
View File

@@ -0,0 +1,16 @@
.git
.gitignore
README.md
.env
.DS_Store
chromadb/
chroma_db/
raggr-frontend/node_modules/
__pycache__/
*.pyc
*.pyo
*.pyd
.Python
.venv/
venv/
.pytest_cache/

31
Dockerfile Normal file
View File

@@ -0,0 +1,31 @@
FROM python:3.13-slim
WORKDIR /app
# Install system dependencies
RUN apt-get update && apt-get install -y \
build-essential \
curl \
&& rm -rf /var/lib/apt/lists/*
# Copy dependency files
COPY pyproject.toml ./
# Install Python dependencies
RUN pip install --no-cache-dir -e .
# Copy application code
COPY *.py ./
# Create ChromaDB directory
RUN mkdir -p /app/chromadb
# Expose port
EXPOSE 8080
# Set environment variables
ENV PYTHONPATH=/app
ENV CHROMADB_PATH=/app/chromadb
# Run the Flask application
CMD ["python", "app.py"]

6
app.py
View File

@@ -1,6 +1,6 @@
import os
from flask import Flask, request, jsonify, render_template
from flask import Flask, request, jsonify, render_template, send_from_directory
from main import consult_simba_oracle
@@ -30,4 +30,8 @@ def query():
def webhook():
data = request.get_json()
print(data)
return jsonify({"status": "received"})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080, debug=True)

36
docker-compose.yml Normal file
View File

@@ -0,0 +1,36 @@
version: '3.8'
services:
raggr:
build: .
ports:
- "8080:8080"
environment:
- PAPERLESS_TOKEN=${PAPERLESS_TOKEN}
- BASE_URL=${BASE_URL}
- OLLAMA_URL=${OLLAMA_URL:-http://ollama:11434}
- CHROMADB_PATH=/app/chromadb
- OPENAI_API_KEY=${OPENAI_API_KEY}
volumes:
- chromadb_data:/app/chromadb
depends_on:
- ollama
networks:
- raggr-network
ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
networks:
- raggr-network
volumes:
chromadb_data:
ollama_data:
networks:
raggr-network:
driver: bridge

View File

@@ -132,9 +132,12 @@ def consult_oracle(input: str, collection):
# model="gemma3n:e4b",
# prompt=f"You are a helpful assistant that understandings veterinary terms. Using the following data, help answer the user's query by providing as many details as possible. Using this data: {results}. Respond to this prompt: {input}",
# )
response = openai_client.responses.create(
response = openai_client.chat.completions.create(
model="gpt-4o-mini",
input=f"You are a helpful assistant that understandings veterinary terms. Using the following data, help answer the user's query by providing as many details as possible. Using this data: {results}. Respond to this prompt: {input}",
messages=[
{"role": "system", "content": "You are a helpful assistant that understands veterinary terms."},
{"role": "user", "content": f"Using the following data, help answer the user's query by providing as many details as possible. Using this data: {results}. Respond to this prompt: {input}"}
]
)
llm_end = time.time()
print(f"LLM generation took {llm_end - llm_start:.2f} seconds")
@@ -142,7 +145,7 @@ def consult_oracle(input: str, collection):
total_time = time.time() - start_time
print(f"Total consult_oracle execution took {total_time:.2f} seconds")
return response.output_text
return response.choices[0].message.content
def paperless_workflow(input):