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
Microsoft's Outage Showed Me Just How Distracting Email Can Be
Sat Nov 14 2026 by Kev QuirkFrankenstein
Wed Nov 11 2026 by joelchrono's blogDecompiling Fast Food Tycoon 2: Drawing the World
Sat Oct 24 2026 by Andrew Healey's BlogUsing R2 with Granted and the AWS CLI
Tue Jul 14 2026 by nicholas.cloudBack on a static site?!
Fri Mar 27 2026 by Articles by/from Ru Singh
Generated by openring