Hacker News new | ask | show | jobs
by codethief 389 days ago
> Reproducibility is the holy grail, IMO

> I'll stick with […] docker with alpine for my deployments

Huh. In my experience Alpine is the worst possible base image to use if you care about reproducibility.

  - The package index's URL cannot be pinned (URL expires on a regular basis)
  - The downloaded package index itself (tarball) cannot be pinned/cached, either, because old package versions (i.e. the URLs in the tarball) become unavailable after a few weeks.
Meanwhile:

https://snapshot.debian.org/

https://snapshot.ubuntu.com/

1 comments

That is a good point and I should have been more clear. My choice for alpine isn't based on it's reproducibility at all, but its small size.

As with anything in engineering there are tradeoffs, there is no singular perfect solution. My choice of alpine was from years ago when I examined the amount of included code in competing docker images and I found the alpine solution was geared towards the least amount of code required to achieve the desired goal (e.g. running a server of a particular kind). That line of thought almost certainly requires a new examination of the available options since the world has changed since I last did a deep dive into docker base images.

In a perfect world I want a base image that doesn't contain a single bit extraneous to executing the services I deploy (for whatever expansive definition of "necessary" I arbitrarily choose). And in that perfect world the image is completely reproduceable from a static definition. Oh yeah, and it should be stable/robust, free from exploits, etc.

So it might be too strong to say "holy grail" if one interprets that as a singular goal that needs to be fulfilled. I meant it as "one among many" in the list of virtues I look for.

That being said, there are a lot of minimal *nixes these days and I would expect Nix would be a contender in that realm as well.