docker-erlang-otp
docker-erlang-otp copied to clipboard
Windows containers support
Adds support for Windows containers (as proposed in #360 ).
Unlike Linux-flavoured containers, Windows insists that a containers base OS and host OS version must match precisely. Therefore I've added both the Windows image name and tag into the tagged Erlang images. In practice, a mismatched host + container OS may work but be prepared for sudden and rather cryptic failures. Microsoft does appear to be actively improving this situation so perhaps this may become a thing of the past eventually.
I've picked a Windows base image version of 10.0.17763.2114
because that's the current version of Windows in Azure Kubernetes Service, in anticipation that this will be the correct version for most users at the time of writing. Adding more base images should be simply a case of adding to the actions matrix
.
Things that are missing:
- In the original Linux build action a test suite from https://github.com/docker-library/official-images.git is run. It looks like there is some support for windows containers here but I'm not sure how this should be implemented.
-
windows/nanoserver
support is not present. Adding support would be a case of figuring out what missing dependencies there are for both the installer and Erlang/OTP itself, and adding them into thenanoserver
image at build time. This is tedious work but the bonus would be a much reduced image size. I suggest leaving this as a separate matter for a future MR.
Any comments / reviews / suggestions for this before it can be merged?
@joeapearson I'm just curious -- since your original post, have you learned any more on why the nano server image is not compatible at the moment? We would very much like to get the smaller image size (specifically for RabbitMQ).
I'm willing to contribute a PR, but unfortunately I wouldn't even know where to start or if I'd actually be any help with no erlang contribution or low-level Windows dev experience.