| ▲ | moochmooch 4 hours ago | ||||||||||||||||||||||||||||
unfortunately, make is more well written software. I think ultimately Dockerfile was a failed iteration of Makefile. YAML & Dockerfile are poor interfaces for these types of applications. The code first options are quite good these days, but you can get so far with make & other legacy tooling. Docker feels like a company looking to sell enterprise software first and foremost, not move the industry standard forward great article tho! | |||||||||||||||||||||||||||||
| ▲ | kccqzy 4 hours ago | parent | next [-] | ||||||||||||||||||||||||||||
Make is timestamp based. That is a thoroughly out-of-date approach only suitable for a single computer. You want distributed hash-based caching in the modern world. | |||||||||||||||||||||||||||||
| ▲ | craftkiller 4 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||
Along similar lines, when I was reading the article I was thinking "this just sounds like a slightly worse version of nix". Nix has the whole content addressed build DAG with caching, the intermediate language, and the ability to produce arbitrary outputs, but it is functional (100% of the inputs must be accounted for in the hashes/lockfile, as opposed to Docker where you can run commands like `apk add firefox` which is pulling data from outside sources that can change from day to day, so two docker builds can end up with the same hash but different output, making it _not_ reproducible like the article falsely claims). Edit: The claim about the hash being the same is incorrect, but an identical Dockerfile can produce different outputs on different machines/days whereas nix will always produce the same output for a given input. | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
| ▲ | stackskipton 2 hours ago | parent | prev [-] | ||||||||||||||||||||||||||||
SRE here, I feel like both are just instructions how to get source code -> executable with docker/containers providing "deployable package" even if language does not compile into self-contained binary (Python, Ruby, JS, Java, .Net) Also, there is nothing stopping you from creating a container that has make + tools required to compile your source code, writing a dockerfile that uses those tools to produce the output and leave it on the file system. Why that approach? Less friction for compiling since I find most make users have more pet build servers then cattle or making modifications can have a lot of friction due to conflicts. | |||||||||||||||||||||||||||||