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"] | |