Forwarded from DevOps
Использование Docker не обязательно должно быть принципом «все или ничего». Вы можете использовать Docker для развертывания и создания образов для продакшн, но вам не обязательно использовать его в разработке.
Каждая инструкция в вашем Dockerfile приводит к созданию слоя изображения. Docker использует слои для повторного использования работы. Слои кэшируются и их не нужно пересобирать, если:
— Все предыдущие слои не изменяются.
— В случае инструкции
COPY: файлы/папки не изменяются.— В случае всех остальных инструкций: текст команды не изменяется.
Представьте, что у нас есть следующий фрагмент Dockerfile:
RUN mkdir /code
COPY code code/
RUN pip install code/requirements.txt
Каждый раз, когда что-либо в каталоге кода меняется, вторую строку необходимо запускать заново, а также каждую последующую строку.
Вот как мы могли бы избежать повторного запуска этапа установки при каждом изменении кода:
RUN mkdir /code
COPY code/requirements.txt code/
RUN pip install code/requirements.txt
COPY code /code
Во-первых, проверьте, не загружаете ли вы зависимости разработки, которые вообще не нужны вашему образу.
Ещё нужно помнить про поведение менеджера пакетов на уровне ОС. Например, `apt`который используется в Ubuntu и Debian, по умолчанию устанавливает «рекомендуемые» пакеты.
Вы можете избежать этого, добавив к
apt-get install флаг --no-install-recommendsBuildKit — это новый механизм сборки образов, который можно использовать вместо стандартного Docker. С ним вы получаете больше параллелизма и эффективности кэширования, плюс новые интересные функции
@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
2 статьи о asyncio semaphore и ограничения конкурентности при использовании asyncio.gather
https://superfastpython.com/asyncio-semaphore/
https://superfastpython.com/asyncio-gather-limit-concurrency/
#asyncio #semaphore #gather #limit #concurrency
https://superfastpython.com/asyncio-semaphore/
https://superfastpython.com/asyncio-gather-limit-concurrency/
#asyncio #semaphore #gather #limit #concurrency