Reduce build time with Docker
One weird trick to reduce build time! CI services hate him!
This is a fairly simple way to reduce your build time if you spend a lot of time bundling dependencies prior to performing tests or deployments in CI.
The trick is to bundle any build dependencies into a Docker image so that you don’t have to install them each time you run a job.
Let’s take a look at my .gitlab-ci.yml file that I used in “GitLab Review Apps with Zeit’s Now.sh service”:
As you can see above, I’m installing build dependencies for now with npm install -g now --silent in both the start_review and stop_review pipeline stages. This is unnecessary and is done every single time a job runs (not DRY). If you run enough builds, that’s a significant amount of time wasted.
Let’s build a simple Docker image that includes the now dependency:
With a simple .gitlab-ci.yml file to push the image to the GitLab container registry:
Now, instead of pulling from image: node in our initial .gitlab-ci.yml, we can use image: my.registry/hugo/now-image:latest and remove the section of our .gitlab-ci.yml where we install our build dependencies, because they’re already bundled!
Now we’ve shaved a bit of time off our builds 👌
If you liked this post, have questions or queries, or can help me make it better, please tweet me!
On the web
I've Moved to Pure Blog!
Sun Feb 8 2026 by Kev QuirkExit Strategy
Fri Feb 6 2026 by joelchrono's blogBuilding a self-hosted cloud coding agent
Tue Feb 3 2026 by Stan's blogRecap 2025
Wed Dec 31 2025 by stefanzweifel.devA Fair, Cancelable Semaphore in Go
Sun Dec 21 2025 by Andrew Healey's Blog
Generated by openring