heroku/base-images

Alpine stack images

plispe opened this issue · 4 comments

Are you planning to create Stack images on top of Alpine linux sometime in the future?
I think it would radically reduce the size of the Stack images.

tt commented

Can you explain why this matters to you?

We have no immediate plans to replace the Linux distribution. The size of the stack image is one aspect we're looking at (and which improved with Heroku-16) but we also have to balance the support guarantees (i.e. how soon can we expect patches when vulnerabilities are discovered) and that it works with our buildpacks (as an example, Alpine ships with another libc implementation which at the very least would require extensive testing before we could roll it out).

However, you can push Alpine based images to our container registry.

Can you explain why this matters to you?

I didn't think, you should change the Linux distribution, because of space saving. I saw that you mentioned the size reduction of Heroku-16 Stack in the blog post. I also notice this trend in Docker community, that many image-vendors provide images based on Alpine Linux as an alternative to images based on Ubuntu or Debian. I just wanted to know your opinion about it.

However, you can push Alpine based images to our container registry.

This is obvious, but I think it would be quite complicated because there is no available specification or tests suite for stack image. Therefore I don't know all the requirements that the stack image has to meet.

For docker images that run a pre-determined application (eg the official postgres or redis images) it's a lot easier to confirm that musl libc used by Alpine doesn't break anything. However for Heroku's use case, there's no way to know whether the customer's binaries would hit issues to due the differences to glibc. This would presumably mean having to provide two Heroku-16 stacks, one based on Ubuntu (that's left as the default) and one on Alpine, rather than replacing the Ubuntu one outright. Having two supported stacks would increase the testing matrix and maintenance burden considerably.

tt commented

For now, you'll need to use our container registry to run on top of Alpine.