How do you usually start and stop the database?
① same container
If I had an installation in which the database was included in the same container, I would have run a container script that first runs PostgreSQL in the background, and then an exec application.
In this case, it is easy to insert a recovery command before the exec application, close the container,
② separate container
Of course, separating the database service from the application, as you said, you can make, in general, the best decision - in the end, these are separate services.
③ control container
You wrote your application, which has DB files, "data volume installed." In this case, you can create a management container in which these files are also installed, which runs PostgreSQL, restores the backup, and exits again. Then close the application container, run the recovery container on the same database volume, wait until it exits, and then run the application container again.
④ host
In the same vein, you can run PostgreSQL on the database volume on the host. This violates the principles of isolation and requires tuning the database on the host, so you may not want to do this.
my personal recommendations
Go first for ②, then ①, then (in your setup) ③, and then ④ in order of preference.