The time described here is from the time you pushed/merged the code to remote and the time when your build finished.
5 minutes is what the best company is doing (yes that includes browser tests) 1. 10 minutes is an achievable goal to aim for.
How are we spent the 5/10-minute build time?
2-7 minutes for building/pulling/caching your containerized image (pre build your image, CI build just pull the cached image / update the cached image if necessary). 2 minute seems like the case when you cached your image right.
Break down each of your suite/linting/business checks to roughly 3-minute piece and running them in parallel after image built/pulled.