fix: deploy
This commit is contained in:
parent
3f1ccfdbfe
commit
6dc977134b
@ -10,8 +10,9 @@ RUN apt-get update && \
|
|||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Копируем весь код и устанавливаем зависимости
|
# Копируем весь код и устанавливаем зависимости
|
||||||
COPY . .
|
COPY requirements.txt .
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
COPY . .
|
||||||
|
|
||||||
# Команда для запуска
|
# Команда для запуска
|
||||||
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||||
|
@ -43,7 +43,9 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
ollama:
|
ollama:
|
||||||
image: ollama/ollama:latest
|
build:
|
||||||
|
context: ./ollama
|
||||||
|
dockerfile: Dockerfile
|
||||||
container_name: ollama
|
container_name: ollama
|
||||||
ports:
|
ports:
|
||||||
- "11434:11434"
|
- "11434:11434"
|
||||||
@ -54,4 +56,3 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
qdrant_data:
|
qdrant_data:
|
||||||
ollama_data:
|
ollama_data:
|
||||||
|
|
||||||
|
37
main.py
37
main.py
@ -27,6 +27,9 @@ import logging
|
|||||||
|
|
||||||
from qdrant_client.http.models import VectorParams, Distance
|
from qdrant_client.http.models import VectorParams, Distance
|
||||||
|
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
# Настройка базового логирования
|
# Настройка базового логирования
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
level=logging.INFO,
|
level=logging.INFO,
|
||||||
@ -34,16 +37,21 @@ logging.basicConfig(
|
|||||||
)
|
)
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# Конфигурация
|
# Загрузить переменные окружения из файла .env
|
||||||
COLLECTION_NAME = "posts"
|
load_dotenv()
|
||||||
VECTOR_SIZE = 1280
|
|
||||||
DATABASE_URL = "sqlite:///./imageboard.db"
|
# Получение значений с указанием значений по умолчанию
|
||||||
QDRANT_URL = "http://qdrant:6333"
|
COLLECTION_NAME = os.getenv("COLLECTION_NAME", "posts")
|
||||||
OLLAMA_URL = "http://ollama:11434"
|
VECTOR_SIZE = int(os.getenv("VECTOR_SIZE", 1280))
|
||||||
EMBEDDING_MODEL = "nomic-embed-text"
|
DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./imageboard.db")
|
||||||
IMAGE_MODEL = "openai/clip-vit-base-patch32"
|
QDRANT_URL = os.getenv("QDRANT_URL", "http://qdrant:6333")
|
||||||
IMAGE_SIZE = (224, 224)
|
OLLAMA_URL = os.getenv("OLLAMA_URL", "http://ollama:11435")
|
||||||
UPLOAD_DIR = "uploads"
|
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)
|
os.makedirs(UPLOAD_DIR, exist_ok=True)
|
||||||
|
|
||||||
@ -344,4 +352,13 @@ async def get_posts_tree(query: VectorQuery):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import uvicorn
|
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)
|
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
|
pillow
|
||||||
transformers
|
transformers
|
||||||
torch
|
torch
|
||||||
|
python-dotenv
|
Loading…
x
Reference in New Issue
Block a user