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