I've previously written about how I run Docker at home. This infrastructure is a core component to running this site. In addition to Docker, Gitlab is the orchestrator for how I run many of my homelab services. In this post we will take a look at how I take Markdown, and with the power of Material for MkDocs, deploy the site you are currently reading.
I run docker workloads at home through Portainer. Some time ago I wanted to standardize on Docker Compose to manage container definitions via code, rather than configuring containers by hand in Portainer. Luckily, Portainer has the concept of "stacks", just their way of handling Docker Compose. Stacks can be used a few ways in Portainer, configured directly in Portainer or referenced from a Git repository, such as Gitlab. This is an attractive feature, even for a homelab, as it allows built in version control of your Docker Compose file, with a built in backup (sort of)!