Grav version 2.0 was recently released https://getgrav.org/. The text you’re reading right now is powered by Grav. I’m using a container from linuxserver.io https://docs.linuxserver.io/images/docker-grav/ for this. Version 2.0 of the container has also been made available there. So here’s a how-to guide on how to complete the migration using a few tricks.
Of course, we need an existing grav1 installation and, accordingly, a grav2 installation as well (this is quite easy to set up in a container).
Follow the Instructions from https://getgrav.org/blog/migrating-to-grav-2 until step 6 Promote to live (test will not work correctly)
spawn a shell into your current running grav container
cd /srv/grav
docker compose exec grav /bin/bash
navigate to the root folder of the running grav instance and copy the grav-2 folder to a local mountpoint.
cd /app/www/public
cp -a grav-2 ./user/pages
exit
stop the grav1 container
docker compose down
you should now have a folder grav-2 in your ./config/www/user/pages
create a new grav2 container
mkdir /srv/grav2
cd /srv/grav2
insert the following listing in a file named docker-compose.yml
services:
grav:
image: lscr.io/linuxserver/grav:latest
container_name: grav
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- ./config:/config
ports:
- 80:80
restart: unless-stopped
start the grav2 instance and wait until it says ready
docker compose up

stop the instance by pressing Ctrl+c
Copy the user folder from the grav-2 migration directory to the correct location and start the container
cd /srv/grav2
cp -a /srv/grav/config/www/user/pages/grav-2/user/* /srv/grav2/config/www/user
docker compose up -d
visit your admin Page an check if everything works as expected.
At first, my blog posts looked pretty messed up. I had to add the following entries to the item.md files:
process:
markdown: true