Use container image for hosting shared tools
As discussed, having a shared container image means that the common tools and dependencies don't need to be downloaded for each job.
Additionally, it also makes it much easier to locally prototype changes, because the container can be used to preview the site (added description to the README).
The pipeline schedule for triggering a regular rebuild of the image needs to be configured in the Web UI, see https://docs.gitlab.com/ee/ci/pipelines/schedules.html#configuring-pipeline-schedules