Building inside container sounds very appealing for multiple reasons. Using multi-stage Docker suppose to help you with:
- having smaller production Docker image
- avoiding additional Docker file for building
- avoiding intermediate images (comparing to Docker builder pattern)
- no need to extract artifacts to local system (comparing to Docker builder pattern)
- eliminating build differences between developers machines and continuous integration agent
- common way for describing build process, independent of used continuous integration solution
Unfortunately, I believe this approach has some major flaws in common building scenarios.