
Earthly – Makefile Meets Dockerfile - scg
https://vladaionescu.com/introducing-earthly-build-automation-for-the-container-era-55619c63c3e
======
antoncohen
This essentially looks like a Makefile where the tasks (targets) are run
inside Docker containers. That is useful, I've definitely written Makefiles
where tasks run in containers, and I wish it was easier.

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?

~~~
riedel
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?

~~~
cpitman
That sounds like Buildah
([https://github.com/containers/buildah/blob/master/README.md](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.

------
kesor
That Dockerfile looks exactly like a multi-stage build Dockerfile, just with
custom and non-standard syntax.

Why NIH instead of simply adopting the already supported Dockerfile syntax of
doing the same thing?

~~~
nine_k
But isn't this file _processed_ differently?

~~~
monkpit
Is it?

------
hartzell
> 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...

------
randallsquared
> _A familiar Dockerfile-like syntax is used, [...]_

Oh, no. Another slightly different format? :/

~~~
inshadows
Docker-like syntax isn't exactly good choice either. Most Dockerfiles I've
seen desperately call for HERE documents.

------
curryhoward
This looks a lot like Toast:
[https://github.com/stepchowfun/toast](https://github.com/stepchowfun/toast)

------
folmar
I strive to see a selling feature in comparison to gitlab-ci... Mixing its
syntax with docker is only so little.

~~~
hartzell
gitlab-ci requires GitLab, doesn't it?

This doesn't, so it's an option for other settings.

~~~
spinningarrow
I think it doesn’t, at least seems to support GitHub repos:
[https://about.gitlab.com/solutions/github/](https://about.gitlab.com/solutions/github/)

------
samsquire
Dockerfiles in YAML

------
jlelse
Looks nice

