This Dockerfile builds a Docker image that has a working, modern Haskell platform installation with Cabal configured to use a Stackage exclusive snapshot.
This image can just be run and it'll spawn a shell. You probably want to use it as a basis for some more specific dev env and preinstall some packages.