Spaces:
Paused
Paused
# Используем официальный Ollama образ как базовый | |
FROM ollama/ollama:latest | |
# Устанавливаем необходимые системные зависимости | |
RUN apt-get update && apt-get install -y \ | |
curl \ | |
python3-pip \ | |
bash \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Создаём не-root пользователя для повышения безопасности | |
RUN useradd -m -u 1000 user | |
# Переключаемся на созданного пользователя | |
USER user | |
# Устанавливаем переменные окружения | |
ENV HOME=/home/user \ | |
PATH=/home/user/.local/bin:$PATH \ | |
OLLAMA_HOST=0.0.0.0 \ | |
PYTHONUNBUFFERED=1 | |
# Устанавливаем рабочую директорию | |
WORKDIR /home/user/app | |
# Копируем файлы приложения в контейнер с правильными правами | |
COPY --chown=user:user . /home/user/app/ | |
# Устанавливаем Python зависимости | |
RUN pip3 install --upgrade pip | |
RUN pip3 install -r requirements.txt | |
# Запускаем Ollama сервер в фоновом режиме, ждем, загружаем модель и останавливаем сервер | |
RUN bash -c "ollama serve & \ | |
sleep 15 && \ | |
ollama pull llama3.1 && \ | |
pkill ollama" | |
# Копируем скрипт entrypoint.sh в контейнер | |
COPY --chown=user:user entrypoint.sh /home/user/app/entrypoint.sh | |
# Делаем скрипт исполняемым | |
RUN chmod +x /home/user/app/entrypoint.sh | |
# Экспонируем необходимые порты | |
EXPOSE 11434 7860 | |
# Переопределяем ENTRYPOINT для запуска собственного скрипта | |
ENTRYPOINT ["/home/user/app/entrypoint.sh"] | |