File size: 2,339 Bytes
f915f91
6a49d93
f915f91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6a49d93
f915f91
 
 
6a49d93
 
 
 
 
 
f915f91
 
 
6a49d93
f915f91
 
 
8ddbf46
f915f91
 
6a49d93
f915f91
 
 
 
 
 
 
 
 
 
 
6a49d93
f915f91
 
 
 
 
 
 
 
 
 
 
 
 
 
6a49d93
f915f91
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 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"]