Works great with Haskell statically compiled binaries. Running the binary through UPX i've managed to get small HTTP microservices down to a 2MB docker image with just Scratch.
Works just as well for Go binaries. It's pretty much the recommended base image for distribution of Go apps on Docker. I assume that it would be just as effective for any statically compiled binary.
Edit: I really should have read the article first. It uses Go binaries as the example. Good to know Haskell folks are also using it.
Yup, in the end it´s an OS process and all rules apply. I did not care too much about Dockerfile best practices in my article. Good point, should at least have used "user <!root>".
Thx! See me comment above on why you would want to put static binaries in "scratch", i.e. use "scratch" to deploy apps and not just for building base layers as you suggest.
You can however compose micro services with scratch
For example I created a cntlm base image (linked in another comment)
From there I can do
FROM my_base_image
COPY whatever
and then add layers of services
first one is proxy
second one could be queue service (for example http://nsq.io)
then a message server, that just sends notifications
etc. etc. etc.
The same could be achieved downloading and configuring the static binaries, but Docker packaging, security and network separation makes evrything a little bit easier