When you create a new repository in Github, all the steps required are shown:
You just need to modify this accordingly for your use case:
you already have files, so no creating files
you may want to create the correct .gitignore for your project type, usually you exclude temporary files, such as caches, logs as well as files containing credentials
For this ...
I would use the webhooks GitHub provides if you don't need something specific from Jenkins (Jenkins is in many cases a consumer of GitHub events/webhooks).
Using this webhook you could inspect each payload for specific parameters (ref, repo, etc...) and do something (...
There can be many correct answers, depending on the strategy you are doing. My take would be:
I wouldn't create a dedicated Docker image (e.g. index.docker.com/python:3.9-slim) with the application on it, but rather use the official Python Docker image, to build the app and the same to run it, so I'd package your app separately from the image that runs it. ...