Если ты часто пересобираешь образы, разделяй слои по логике: зависимости — отдельно, код — отдельно.
Так Docker сможет использовать кеш и не пересобирать всё с нуля при каждом изменении.
Например 👇
❌ Плохой Dockerfile:
FROM python:3.11
COPY . /app
RUN pip install -r /app/requirements.txt
CMD ["python", "app.py"]
Каждое изменение кода пересобирает и зависимости.
✅ Оптимальный вариант:
FROM python:3.11
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Теперь при изменении кода пересобирается только последний слой -время сборки сокращается в 5–10 раз, а CI становится мгновенным.
💡 Совет:
Добавь .dockerignore, чтобы не тащить в образ кеши, .git, логи и прочий мусор - это уменьшит размер и ускорит билд.