|
|
|
|
|
by homebrewer
504 days ago
|
|
Dockerfile is one of the worst parts of docker — it's a primitive shell-like DSL that didn't have to exist and that feels like it was designed by a person with a couple of hours of experience in writing shell scripts. Instead of providing a set of separate tools to be glued together with a proper shell or a full programming language, they designed this nonsense that can't even do 1/10th of what busybox is able to do, and have been in the business of adding the missing pieces (like `COPY --chmod`) for the past 10+ years. It has taken them about a decade to add HEREDOC support, for example. Most dockerfiles still use RUN foo && \
bar && \
baz
instead of RUN <<END
set -eu
foo
bar
baz
END
I avoid dockerfiles and prefer using buildah for building containers. Since they're all using the same specification, it doesn't matter what runtime is then used to run them: it can be docker, podman, k8s, whatever.Here's the official example of building a lighttpd container: https://github.com/containers/buildah/blob/92015b7f4301d7eb8... You can eschew bash and call these commands however you want — from a python script, or Go, or even assembly. |
|