streamlit_app / Dockerfile
Marakya1836's picture
Update Dockerfile
f915f91 verified
# FROM python:3.9-slim
# WORKDIR /app
# RUN apt-get update && apt-get install -y \
# build-essential \
# curl \
# software-properties-common \
# git \
# && rm -rf /var/lib/apt/lists/*
# COPY requirements.txt ./
# COPY src/ ./src/
# RUN useradd -m -u 1000 user
# USER user
# ENV HOME=/home/user\
# PATH=/home/user/.local/bin:$PATH
# WORKDIR $HOME/app
# RUN pip install --no-cache-dir --upgrade pip
# COPY --chown=user . $HOME/app
# RUN pip3 install -r requirements.txt
# EXPOSE 8501
# HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health
# ENTRYPOINT ["streamlit", "run", "src/streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]
FROM python:3.9-slim
# Установка системных зависимостей
RUN apt-get update && apt-get install -y \
build-essential \
curl \
git \
&& rm -rf /var/lib/apt/lists/*
# Создание структуры директорий
RUN mkdir -p /app/cache/huggingface && \
mkdir -p /app/src
# Настройка прав доступа (безопасно для production)
RUN chmod -R 755 /app && \
chown -R 1000:1000 /app
# Переход в рабочую директорию
WORKDIR /app
# Создание не-root пользователя
RUN useradd -r -u 1000 -g root appuser
# Установка переменных среды
ENV HOME=/app \
PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=off \
HF_HOME=/app/cache/huggingface \
TRANSFORMERS_CACHE=/app/cache/huggingface \
HUGGINGFACE_HUB_CACHE=/app/cache/huggingface
# Копирование файлов с установкой владельца
COPY --chown=1000:root . .
# Установка зависимостей Python
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# Переключение на не-root пользователя
USER 1000
# Экспорт порта и healthcheck
EXPOSE 8501
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8501/_stcore/health || exit 1
# Запуск приложения
ENTRYPOINT ["streamlit", "run", "src/streamlit_app.py", \
"--server.port=8501", \
"--server.address=0.0.0.0", \
"--browser.gatherUsageStats=false"]