fix: deploy
This commit is contained in:
parent
3f1ccfdbfe
commit
6dc977134b
@ -10,8 +10,9 @@ RUN apt-get update && \
|
||||
WORKDIR /app
|
||||
|
||||
# Копируем весь код и устанавливаем зависимости
|
||||
COPY . .
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
COPY . .
|
||||
|
||||
# Команда для запуска
|
||||
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
|
@ -43,7 +43,9 @@ services:
|
||||
restart: unless-stopped
|
||||
|
||||
ollama:
|
||||
image: ollama/ollama:latest
|
||||
build:
|
||||
context: ./ollama
|
||||
dockerfile: Dockerfile
|
||||
container_name: ollama
|
||||
ports:
|
||||
- "11434:11434"
|
||||
@ -54,4 +56,3 @@ services:
|
||||
volumes:
|
||||
qdrant_data:
|
||||
ollama_data:
|
||||
|
||||
|
37
main.py
37
main.py
@ -27,6 +27,9 @@ import logging
|
||||
|
||||
from qdrant_client.http.models import VectorParams, Distance
|
||||
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Настройка базового логирования
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
@ -34,16 +37,21 @@ logging.basicConfig(
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Конфигурация
|
||||
COLLECTION_NAME = "posts"
|
||||
VECTOR_SIZE = 1280
|
||||
DATABASE_URL = "sqlite:///./imageboard.db"
|
||||
QDRANT_URL = "http://qdrant:6333"
|
||||
OLLAMA_URL = "http://ollama:11434"
|
||||
EMBEDDING_MODEL = "nomic-embed-text"
|
||||
IMAGE_MODEL = "openai/clip-vit-base-patch32"
|
||||
IMAGE_SIZE = (224, 224)
|
||||
UPLOAD_DIR = "uploads"
|
||||
# Загрузить переменные окружения из файла .env
|
||||
load_dotenv()
|
||||
|
||||
# Получение значений с указанием значений по умолчанию
|
||||
COLLECTION_NAME = os.getenv("COLLECTION_NAME", "posts")
|
||||
VECTOR_SIZE = int(os.getenv("VECTOR_SIZE", 1280))
|
||||
DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./imageboard.db")
|
||||
QDRANT_URL = os.getenv("QDRANT_URL", "http://qdrant:6333")
|
||||
OLLAMA_URL = os.getenv("OLLAMA_URL", "http://ollama:11435")
|
||||
EMBEDDING_MODEL = os.getenv("EMBEDDING_MODEL", "nomic-embed-text")
|
||||
IMAGE_MODEL = os.getenv("IMAGE_MODEL", "openai/clip-vit-base-patch32")
|
||||
# IMAGE_SIZE ожидается в формате "224,224", преобразуем его в кортеж чисел
|
||||
image_size_str = os.getenv("IMAGE_SIZE", "224,224")
|
||||
IMAGE_SIZE = tuple(map(int, image_size_str.split(',')))
|
||||
UPLOAD_DIR = os.getenv("UPLOAD_DIR", "uploads")
|
||||
|
||||
os.makedirs(UPLOAD_DIR, exist_ok=True)
|
||||
|
||||
@ -344,4 +352,13 @@ async def get_posts_tree(query: VectorQuery):
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
print("COLLECTION_NAME:", COLLECTION_NAME)
|
||||
print("VECTOR_SIZE:", VECTOR_SIZE)
|
||||
print("DATABASE_URL:", DATABASE_URL)
|
||||
print("QDRANT_URL:", QDRANT_URL)
|
||||
print("OLLAMA_URL:", OLLAMA_URL)
|
||||
print("EMBEDDING_MODEL:", EMBEDDING_MODEL)
|
||||
print("IMAGE_MODEL:", IMAGE_MODEL)
|
||||
print("IMAGE_SIZE:", IMAGE_SIZE)
|
||||
print("UPLOAD_DIR:", UPLOAD_DIR)
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
||||
|
8
ollama/Dockerfile
Normal file
8
ollama/Dockerfile
Normal file
@ -0,0 +1,8 @@
|
||||
FROM ollama/ollama:latest
|
||||
|
||||
# Копируем скрипт запуска в контейнер
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
# Переопределяем ENTRYPOINT, чтобы запускался наш скрипт
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
34
ollama/entrypoint.sh
Normal file
34
ollama/entrypoint.sh
Normal file
@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
echo "Запускаем ollama serve в фоне..."
|
||||
# Запускаем сервер в фоне и сохраняем PID процесса
|
||||
ollama serve &
|
||||
SERVER_PID=$!
|
||||
|
||||
echo "Ожидаем, пока сервер станет доступным..."
|
||||
# Пытаемся получить список моделей, ожидая доступность сервера
|
||||
for i in $(seq 1 30); do
|
||||
if ollama list >/dev/null 2>&1; then
|
||||
echo "Сервер доступен."
|
||||
break
|
||||
fi
|
||||
echo "Сервер ещё не готов, ждём..."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "Проверяем наличие модели nomic-embed-text..."
|
||||
# Вывод списка моделей для отладки
|
||||
ollama list
|
||||
|
||||
# Если модели нет, выполняем загрузку
|
||||
if ! ollama list | grep -q 'nomic-embed-text'; then
|
||||
echo "Модель nomic-embed-text не найдена. Загружаем..."
|
||||
ollama pull nomic-embed-text
|
||||
else
|
||||
echo "Модель nomic-embed-text уже установлена."
|
||||
fi
|
||||
|
||||
echo "Сервер ollama запущен и работает. Ожидание завершения процесса..."
|
||||
# Ожидаем завершения фонового процесса сервера
|
||||
wait $SERVER_PID
|
@ -8,3 +8,4 @@ requests
|
||||
pillow
|
||||
transformers
|
||||
torch
|
||||
python-dotenv
|
Loading…
x
Reference in New Issue
Block a user