Какие знаешь способы оптимизации Dockerfile
Python
Senior
Без компании
Какие знаешь способы оптимизации Dockerfile
Ответы
- **Многоступенчатая сборка** — уменьшает итоговый образ, оставляя только необходимые артефакты.
```
FROM python:3.9 as builder
COPY requirements.txt .
RUN pip install --user -r requirements.txt
FROM python:3.9-slim
COPY --from=builder /root/.local /root/.local
```
- **Использование легковесных базовых образов** (например, `alpine`, `slim`).
```
FROM python:3.9-slim
```
- **Объединение команд RUN** — уменьшает количество слоев.
```
RUN apt-get update && apt-get install -y \
git \
curl \
&& rm -rf /var/lib/apt/lists/*
```
- **Кэширование зависимостей** — копируем `requirements.txt` отдельно и устанавливаем зависимости до копирования кода.
```
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
```
- **Игнорирование ненужных файлов** через `.dockerignore`.
```
__pycache__/
*.pyc
.env
```
- **Удаление временных файлов** в том же слое, где они созданы.
```
RUN wget https://example.com/file.tar.gz \
&& tar -xzf file.tar.gz \
&& rm file.tar.gz
```