Hey Steve, great write up. In reading through I saw something that you might want to take a look at. In your statement about data persistence you say "If I change any data, such as with a unit test, I can stop and restart my container, returning to the original state of the database schema and data". I understand what you are saying here however using the words Stop and Start which are docker container commands may leave it unclear. Simply stopping then starting your container will not return your container back to the original state. You would have to recreate the container from image (docker run) for the data to revert; and then only if not using volumes to persist.
I just didn't want this to confuse anyone that might be reading this and following along.
Thanks for providing this wonderfully informative stairway.