Test / Dockerfile
Kgshop's picture
Update Dockerfile
1c09a18 verified
# 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"]