Вы должны использовать кэширование пакетов, но не кэширование node_modules
напрямую.Вместо этого вы монтируете каталоги кеша, которые ваш установщик пакетов использует , и ваша установка будет молниеносно .Docker делает это возможным, позволяя вам монтировать каталоги в контейнере, который сохраняется во всех сборках.
Для yarn
mount ~/.cache
или ~/.cache/yarn
Для npm
mount ~/.npm
docker run -it -v ~/.npm:/.npm ~/.cache:/.cache /my-app:/my-app testing-image:1.0.0 bash -c 'npm ci && npm test`
Примечание: Я использую здесь npm ci
, который будет всегда удалять node_modules и переустанавливаться с использованием точных версий в package-lock.json
, так что вы получитеочень последовательные сборки.(В пряже это yarn install --frozen-lockfile
)