A few things to note about this sample configuration:

Under volumes:, local directories are mapped to the containers. It expects docker-compose.yml to be in the root project directory. Python packages are also mapped from the local directory to make the image more reusable (i.e. no need to rebuild the images every time you add a new package to your project).

For the youtube-audio-dl project, the manage.py file is in the project root, that's why I set that path as the working_dir.

You can run Django management commands inside the django container by prepending docker-compose run django (e.g. docker-compose run django python manage.py migrate).