По вам прям докер плачет, он как раз для токого и сделан. Понемаю, что так сразу не ясно, как это всё использовать.
Я вам объясню на примере,
вот это пример. В контейнере находится программа которая запускается по крону. В образе уже всё есть кроме трёх вещей - конфигурации крона, ssh ключа и конфигурации для самой программы(которая уже находится в образе).
То есть как видно, там идёт чёткое разделение между системой и данными. Система и программы уже готовы, но им для работы нужны данные которые я им добавляю когда запускаю контейнер из этого образа.
Обратите внимание на файл "docker-compose.yml" (для его использования помимо докера нужен так-же docker-compose) в нём описывается, как должен запускатся контейнер.
volumes:
- /nodejs/nodebackup/config.yml:/nodebackup/config.yml
- /nodejs/nodebackup/id_rsa:/nodebackup/id_rsa
- /nodejs/nodebackup/crontab.tmp:/crontab.tmp
Volumes говорит, какие данные я хочу добавить из моего хоста в контейнер. То есть тут как раз находятся эти три файла, про которые я писал. Можно добавлять не только файлы, но и папки.
В вашем случае вам надо взять контейнер, в котором есть питон, либо сделать самому и при запуске контейнера сказать, что хотите папку с вашим проектом примонтировать в определённое место в контейнере.
В плюсе получется, что вам не надо нечего делать на хосте, кроме установки докера. При бэкапе нужно сохранять только данные, если проект находится в гите, то даже его ненадо сохранять.