Well I got eggsbenedict.info running on my (linux) dev box as a docker image, but it took some effort. The current stack is AWS EC2 + S3, MVC 6 on Kestrel, Entity Framework 7 + Postgres, AngularJs but there's still some Knockout templates lying around.

Mono + Entity Framework 7

Mono does not support Multiple Active Result Sets (MARS) so I had to turn it off. This then breaks my role management. Another problem is that it can't deal with DateTime values properly. Considering I had been building against dnxcore50, I figured I'd just switch the DNVM runtime to use coreclr, which unfortunately is not at this time a solution because System.Client.SqlClient is not yet supported on coreclr.


When I push the project to the docker host it turns out I'm not actually targeting dnxcore50 at all. The DockerFile produced by VS2015 references the mono based docker image.

Because I'm actually running DNX451 on mono, this means that my previous post on what is supported was kind of wrong - the dependency issues listed are specific to dnxcore50, which I'm not actually using on the host. I have also discovered that Entity Framework 6 does run on MVC 6, and (at least) the DateTime issue with mono doesn't exist. I need to determine whether AspNet Identity 2 will run on MVC 6 and if it does, I can drop EF7 for EF6.


Even once I'm able to run the complete site in a docker container, there's still a sore spot that keeps me locked into Microsoft infrastructure - SQL Server, which currently does not (dare I say will never) run in a docker container. I was hoping to switch to MySql which I'm already having success with in docker, but unfortunately no Entity Framework 7 provider exists yet. This is where NPGSQL comes in - they have a pre-release EF7 provider and are on docker.

A couple of nights ago, at 2am in the morning, I was reading this instead of sleeping. I was psyched to attempt a migration to postgres and jumped into it the next morning. After doing so was able to successfully bring the site up in docker using EF7. The NPGSQL provider for EF6 is also more mature so will be nice if I can go back to EF6.