Docker

Вопросы по контейнеризации и Docker
1 / 15
Есть!
В таком случае изменения только в коде не повлекут за собой установку библиотек, т.к. слой с установкой docker возьмёт из кэша.
Пусть мы ведём локальную разработку. Значит, мы часто меняем код и собираем наш образ. Зависимости меняются сильно реже кода.

При изменении кода и пересборке образа установка зависимостей запустится заново. Это увеличит время сборки и добавит дискомфорта в разработку.

Дело в том, что `COPY` изменит слой, следовательно, кеш следующих слоёв станет неактуальным, и их нужно будет собрать заново.

Решение — реструктурировать Dockerfile: поставить установку зависимостей перед копированием кода:
```Dockerfile ... COPY requirements.txt requirements.txt RUN pip install --no-cache-dir -r requirements.txt COPY . . ... ```
Ответ
Рассмотрим пример:
...
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
...
В типичном Dockerfile почти всегда будут присутствовать две группы команд:
Есть ли разница, в каком порядке эти группы команд располагать друг относительно друга (выше или ниже) в Dockerfile?
Условия
Вопрос
  • Перенести все нужные файлы внутрь образа
  • Установить зависимости

*Подсказка – Вспомните про кеширование слоев

Нажмите на карточку, чтобы посмотреть ответ