Earthly – Makefile Meets Dockerfile(vladaionescu.com)
vladaionescu.com
Earthly – Makefile Meets Dockerfile
https://vladaionescu.com/introducing-earthly-build-automation-for-the-container-era-55619c63c3e
17 comments
Except all the nice things from makefiles like actual rules are missing in this one. There must be a better way to do this. Isn't there a tool to actually incrementally build container layers in the normal file system that works with the real make or any other build system?
That sounds like Buildah (https://github.com/containers/buildah/blob/master/README.md).
Buildah can work with standard Dockerfiles, but it can also do a lot more. For example, you can mount the container filesystem, modify it (say using make), then use those updates as a new layer.
Buildah can work with standard Dockerfiles, but it can also do a lot more. For example, you can mount the container filesystem, modify it (say using make), then use those updates as a new layer.
Bazel has a set of rules to do this AFAICT. The OCI format isn’t particularly complex, so it’s probably not hard to build something into Make or CMake or so on. (IMO Bazel has some of the best tools for abstraction and reuse in a build system, so it makes even more sense there.)
> But most importantly, all builds are completely reproducible.
This is only true if the commands that the recipe executes are reproducible. If someone's pulling packages from PyPi or C[PR]AN or ... w/out locking the versions, all bets are off.
This is one of my biggest beefs with many containerization sales pitches...
This is only true if the commands that the recipe executes are reproducible. If someone's pulling packages from PyPi or C[PR]AN or ... w/out locking the versions, all bets are off.
This is one of my biggest beefs with many containerization sales pitches...
> A familiar Dockerfile-like syntax is used, [...]
Oh, no. Another slightly different format? :/
Oh, no. Another slightly different format? :/
Docker-like syntax isn't exactly good choice either. Most Dockerfiles I've seen desperately call for HERE documents.
Relevant https://xkcd.com/927/
This looks a lot like Toast: https://github.com/stepchowfun/toast
I strive to see a selling feature in comparison to gitlab-ci... Mixing its syntax with docker is only so little.
gitlab-ci requires GitLab, doesn't it?
This doesn't, so it's an option for other settings.
This doesn't, so it's an option for other settings.
I think it doesn’t, at least seems to support GitHub repos: https://about.gitlab.com/solutions/github/
Dockerfiles in YAML
Looks nice
But does this actually replace Bazel? Without language specific rules, like knowledge of dependencies, can it build a full dependency graph? If I have a monorepo with many packages, can Earthly build only what needs to be built, and always build what needs to be built?