At BKNO3 we use Docker and docker-compose for development, in order
to make sure every developer can easily and reliably set up a
development environment locally, even if they're not familiar with the
project itself (we have several components, with different developers
working on each one).

The same docker containers are used to run continuous integration (on
CircleCI) as well, in order to reduce the differences between the
dev/ci/prod environments.

A big pain in doing so, however, was the time spent rebuilding the
whole docker image every time the test suite was run, even if nothing
changed ...