3 ms·
> What happened to traditional bash scripts, chroot profiles and Makefiles? They're gone, and it's not for the worst. Have you ever tried editing a 1000+ line
by Sebb767 5y ago
> What happened to traditional bash scripts, chroot profiles and Makefiles?
They're gone, and it's not for the worst. Have you ever tried editing a 1000+ line Makefile or debugging an insanely large bash build script with all these assumptions baked in? Bonus if the shebang requests sh, but it actually needs whatever shell the author has.
Docker is just static linking taken to the max. It's so ubiquitous because it works well. Yes, these Dockerfiles could have been written better, but the equivalent shell files would have been worse.
- motoboi 5y agoPeople fail to realize Docker is about packaging. If the author uses docker and you don’t use docker, repackage it yourself! Don’t blame the author for not limiting himself.
- throwaway894345 5y agoI’m a big fan of containers, but we oughtn’t hold Dockerfiles on a pedestal. They kind of work, but you have to shoehorn a dependency tree into a linear list of layers in a futile attempt to make build caching work. Moreover, they aren’t reproducible as they tend to rely on arbitrary network calls. To a lesser extent, the semantics are also “imperative commands” rather than “packages to be installed” which is the more natural way to think of composing an image. I’m of the impression that the underlying BuildKit exposes the requisite dependency tree structure, but it hasn’t found it’s way downstream into the Dockerfile representation (to my knowledge, anyway). There’s also Nix which supports building arbitrary images with an elegant conceptual approach, but everything about Nix in practice seems unworkable for professional software development.