I was looking into some of this myself already; really helpful article and amazing results. Another interesting approach is to compile Haskell with HaLVM[1] in to a unikernel that can run on a Xen hypervisor. But this is a non-posix environment on which Haskell's "network" package does not compile. No "network" means that it is currently impossible[2] for WAI (Haskell's standard interface between web servers and applications), but also db libraries, to run in such an environment.
With going unikernel with Haskell still being a little steep (but definitely on my wish list), then the next-best would be a mini VM/container image. And 5MB sure is mini!
I use the same technique of bundling the necessary dynamic libraries and gconv files for the git-annex standalone tarball distribution. I've observed users untarring that onto arbitrary wacky NAS boxes and it just working, which is pretty nice.
I later adapted that for use in propellor too, when it's deploying docker/etc containers. This allows propellor to bootstrap itself to run inside an arbitrary docker container. http://joeyh.name/blog/entry/propelling_containers/
cies|10 years ago
With going unikernel with Haskell still being a little steep (but definitely on my wish list), then the next-best would be a mini VM/container image. And 5MB sure is mini!
Once again, thanks FPComplete!
1: https://github.com/GaloisInc/HaLVM
2: https://github.com/GaloisInc/HaLVM/issues/43
tel|10 years ago
chanux|10 years ago
There was a go web server I dockerized and came under 5MB [1]. But the thttpd image by larsks was an amazing 1MB [2].
[1] https://registry.hub.docker.com/u/chanux/muhttpd/
[2] https://registry.hub.docker.com/u/larsks/thttpd/
joeyh|10 years ago
I later adapted that for use in propellor too, when it's deploying docker/etc containers. This allows propellor to bootstrap itself to run inside an arbitrary docker container. http://joeyh.name/blog/entry/propelling_containers/
Later, I used propellor's ability to bootstrap itself this way to let it copy itself onto a VM and run there to replace its content with a clean reinstall of Debian. http://joeyh.name/blog/entry/clean_OS_reinstalls_with_propel...
thu|10 years ago
The resulting image for "hello world" compressed with `xz` (default options) is 1.5MB. And it runs in a chroot or with qemu too.
joeyh|10 years ago
[deleted]