This includes only the most basic steps of the upgrade, to make the
existing code run with Python 3.12. No refactoring to make use of new
features is included.
This includes the code files in the docker image and creates a separate
data dir, which means we don't need to manually mount files into the
container anymore.