Simple example for creating a Docker image for development.
Structure:
/whales
/foo
...
docker-compose.yml
Dockerfile
Running docker-compose build and then docker-compose run dev from inside the whales directory will run the container and then drop you into the src directory. Any files you have in the foo directory on your host machine will be shared with the foo directory in the container with git and emacs installed.
Can change the FROM image to some other Linux-based box that suits your application (python, node, jupyter, etc).
You have to do docker-compose run instead of docker-compose up if you want an interactive session, because up is meant to run multiple containers.