I would avoid overloading the containers to have a single image at least for development. What you can do for development is create multiple images and have a docker-compose.yml .
That way the developers don’t have to hate you for making their local build cycles take forever.
For the final package you can build from scratch or some OS and copy the from the built images later so your production package is a single image.