I got the question how to solve the problem that when backing up the storage of a dockerized Postgres database (using Resticker) it could be that the backup is corrupt because the database is still running.
This is an addition to my post of how to backup Docker volumes using resticker.
I had exactly the same problem. I wanted to backup a Postgres database running in a Docker container without having to stop the database or have a corrupt backup.
I admit it, I am a big fan of pre-packaged software. Software that I simply set up by typing a single command or just adding a few lines to my existing configuration. I like simplicity and this kind of software makes things a lot easier and lets one focus on getting work done.
I still remember the time when I first came into contact with Linux and spent a lot of time with it.
After Microsoft (GitHub) acquired npm, I think it’s only a matter of time before Docker (the rest that’s left after selling Docker Enterprise) is also taken over by Microsoft or GitHub.
What makes me think so? Docker needs to find a new way to make money after Docker Enterprise is sold, Docker and GitHub already seem to be working together, and they’re also working with Microsoft on better Docker support in Windows with WSL2.
I just migrated my main server (a VPS at Hetzner) from RancherOS to Alpine. While I considered Alpine already as a Docker host when I setup RancherOS, Alpine wasn’t Docker-host-ready yet. But time passed and now it’s even simpler to setup a Alpine Docker host than it is to install and maintain a RancherOS server. I really love Alpine for it’s simplicity and lightweight size and use it as a base image whenever I need to create a Dockerfile.
Jérôme Petazzoni published a great article on the Ardan labs blog about reducing the size of Docker images. He compares different ways to package a binary into an image by using different base images and either dynamic or static linking. The conclusion is that although you can get really tiny images with SCRATCH, it is probably not worth it because it is more difficult to debug.
I often choose the Alpine image, because I can easily add the required libraries using apk, it’s quite small, and to debug, I can easily open a shell inside the container.
One of the most visited pages on my blog is about how to automatically backup Docker volumes. In that post I use the Docker image blacklabelops/volumerize. Unfortunately that image is deprecated since March 2019 and not longer maintained.
Under the hood the volumerize image is using the GNU program duplicity, which is an awesome software, but also has its downsides. Especially the model of full backups and incremental backups comes from a time where backups where mainly made to tapes (just append new files all the time).
A few weeks ago PostgreSQL 11 was released with a few new features and probably also a lot of improvements and bug fixes since the last release. Although I don’t really have the need to update to the latest version (I just use PostgreSQL as database for my Nextcloud and Miniflux installations), I wanted to migrate it though, to have everything up to date and probably profit from those smaller improvements.
Update I changed my setup because the Docker image used in this post got deprecated and is no longer maintained. Read about my new setup using restic to automatically backup Docker volumes.
👉 New setup
Original post For my server needs, I rent a small VPS at Hetzner Cloud. It has two vCPUs, 4 GB of RAM, 40 GB of storage and I can use 20 TB of outgoing traffic each month (the incoming traffic is free and unlimited) and it only costs me 5,83€ each month, a lot cheaper than DigitalOcean, Linode or even AWS.
Hugo is a framework to build static websites. Yesterday I migrated this blog from Ghost - a dynamic NodeJS based CMS - to Hugo, not only to reduce the hardware requirements (a static page uses way less resources), but also to simplify my setup.
I already use Hugo for two basic homepages (my personal one and the AndroidPub one), where I don’t have that many requirements regarding “blogging”, because I don’t use them for blogs.
Containers are wonderful and Docker is a really awesome and lifesaving technology, even if you don’t host sites and services with millions of users that need to auto-scale etc. Docker can already simplify a simple hosting setup just with a couple of small webpages and a Git server.
Some months ago I switched my whole setup to use only Docker. I used Ubuntu server because that was the best option at my hosting provider.