File size: 2,193 Bytes
d8298c2
8b0e16d
 
1c09a18
d8298c2
 
 
1c09a18
 
 
 
 
 
 
d8298c2
 
 
 
 
 
 
1c09a18
d8298c2
8b0e16d
d8298c2
27fea4e
 
d8298c2
 
 
27fea4e
d8298c2
 
 
8b0e16d
d8298c2
 
 
 
 
8b0e16d
d8298c2
 
 
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
# 1. Используем базовый образ Python
FROM python:3.9-slim

# 2. Установка системных зависимостей и Google Chrome (СОВРЕМЕННЫЙ МЕТОД)
RUN apt-get update && apt-get install -y \
    wget \
    gnupg \
    # Создаем директорию для ключей
    && mkdir -p /etc/apt/keyrings \
    # Скачиваем ключ Google, конвертируем его и сохраняем в правильное место
    && wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /etc/apt/keyrings/google-chrome.gpg \
    # Добавляем репозиторий Google Chrome, указывая на скачанный ключ
    && echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list \
    # Обновляем список пакетов и устанавливаем Chrome + зависимости
    && apt-get update \
    && apt-get install -y \
    google-chrome-stable \
    libglib2.0-0 \
    libnss3 \
    libgconf-2-4 \
    libfontconfig1 \
    # Очищаем кэш apt для уменьшения размера образа
    && rm -rf /var/lib/apt/lists/*

# 3. Устанавливаем рабочую директорию
WORKDIR /app

# 4. Копируем файл зависимостей и устанавливаем их (оптимизация кэширования Docker)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 5. Создаем пользователя без прав root для безопасности
RUN useradd -m appuser
USER appuser

# 6. Копируем остальную часть приложения
# --chown=appuser:appuser гарантирует, что у нового пользователя есть права на эти файлы
COPY --chown=appuser:appuser . .

# 7. Открываем порт, на котором будет работать приложение
EXPOSE 7860

# 8. Команда для запуска приложения
CMD ["python", "app.py"]