• Как ускорить docker push?

    @Dima_Amigo Автор вопроса
    Василий Банников, да, но даже если смотреть на node_modules, а на слой с кодом. Хоть он и меньше по размеру, но тоже зря загружается целиком. Интересно, можно ли изменить реализацию docker push/pull, чтобы всё сильно ускорить
  • Как ускорить docker push?

    @Dima_Amigo Автор вопроса
    Спасибо за полезный пример с --from=build.

    Но если хотя бы один файл изменится в node_modules, будет создан новый слой и весь его нужно будет грузить на registry, чтобы потом деплоить.

    В поведении слоёв никакой проблемы нет, всё правильно и ваш способ даже поможет не создавать лишний раз новый слой. Меня не устраивает поведение команд docker push/pull.

    Представьте, что мы можем изменить реализацию этих команд.

    Альтернативный docker push берёт нужный образ и помещает его через docker save в архив. Этот архив нужно разархивировать вместе со всеми слоями внутри и запушить в специальный git-репозиторий.

    Альтернативный docker pull скачивает нужный образ из определённой ветки или тега в гите, собирает обратно из него архив и через docker load загружает образ в докер.

    По времени должно работать быстрее, потому что будут догружены только те файлы, которые изменились.

    Минусы в таком подходе тоже есть: каждый git fetch вынужден грузить абсолютно все изменения (все версии).

    Можно думать над велосипедами в эту сторону (может быть rsync вместо git), но вдруг уже есть готовое решение...
  • Как ускорить docker push?

    @Dima_Amigo Автор вопроса
    Lynn «Кофеман», Было бы отлично, но команда загрузки зависимостей в NodeJS всегда будет грузить 600МБ за раз при любом изменении в package.json(

    Простой пример:
    COPY package.json .
    RUN npm install