Skip to content

mritd/autobuild

Repository files navigation

Earthly Auto Build Repo

This repo contains the Earthfile of some useful images under the Docker Hub mritd user.

Status Docker Hub
mritd/alpine https://hub.docker.com/r/mritd/alpine
mritd/caddy https://hub.docker.com/r/mritd/caddy
mritd/confluence https://hub.docker.com/r/mritd/confluence
mritd/ddns https://hub.docker.com/r/mritd/ddns
mritd/demo https://hub.docker.com/r/mritd/demo
mritd/derper https://hub.docker.com/r/mritd/derper
mritd/idgen https://hub.docker.com/r/mritd/idgen
mritd/jira https://hub.docker.com/r/mritd/jira
mritd/nginx-singlepage https://hub.docker.com/r/mritd/nginx-singlepage
mritd/nodebuild https://hub.docker.com/r/mritd/nodebuild
mritd/openjdk https://hub.docker.com/r/mritd/openjdk8
mritd/poetbot https://hub.docker.com/r/mritd/poetbot
mritd/s2h https://hub.docker.com/r/mritd/s2h
mritd/ssh https://hub.docker.com/r/mritd/ssh
mritd/derper https://hub.docker.com/r/mritd/derper
mritd/bandwagonmon https://hub.docker.com/r/mritd/bandwagonmon
mritd/notibot https://hub.docker.com/r/mritd/notibot
mritd/open-vm-tools https://hub.docker.com/r/mritd/open-vm-tools
mritd/container-cli https://hub.docker.com/r/mritd/container-cli
mritd/dnsacme https://hub.docker.com/r/mritd/dnsacme
mritd/aria2 https://hub.docker.com/r/mritd/aria2
mritd/makeself https://hub.docker.com/r/mritd/makeself
mritd/tuic-server https://hub.docker.com/r/mritd/tuic-server
mritd/snell https://hub.docker.com/r/mritd/snell
mritd/ci-runner https://hub.docker.com/r/mritd/ci-runner

Why not use Dockerfile?

In the past few years, I have to admit that Dockerfile is great; but as the number of Dockerfile increases, I have to do a lot of repetitive work to solve some problems.

For example, "unify the basic image version"、"fix compatibility issues for specific languages"、"cross compile for each platform", etc...

Well, I can write some "magic scripts" to be lazy; but this will cause the production-level Docker image to become unmaintainable, just like a messy network cable...

Now, Earthly has solved this problem; I unified the specific language version、the operating system at compile time、the basic runtime environment、and some general fixes. Also use GitHub Action for reliable cross-compilation to generate multi-arch images. It all got better 🤪.

Directory Structure

.
├── caddy                       # The directory name is the target image
│   └── Earthfile
├── openjdk
│   ├── cgradle                 # If the build image needs some other files, they will also be saved in this directory
│   ├── cmvn
│   └── Earthfile               # Earthfile is a file similar to Dockerfile, it is modular, it is very convenient to reuse code
│
│
├── udcs                        # udcs (user-defined commands) is a special directory where most common Earthfiles are stored
│   ├── Earthfile               # udcs/Earthfile stores general commands that do not depend on system os and language
│   ├── image                   # udcs/image stores the basic runtime or compile image of most programming languages
│   ├── language                # udcs/language stores special commands for specific languages
│   └── os                      # udcs/os stores special commands for specific system os
│
│
├── .github
│   └── workflows                   # The workflows directory stores job definitions for each docker image automated build
│       ├── alpine.yaml
│       ├── caddy.yaml
│       ├── confluence.yaml
│       ├── ddns.yaml
│       ├── demo.yaml
│       ├── idgen.yaml
│       ├── jira.yaml
│       ├── nginx-singlepage.yaml
│       ├── nodebuild.yaml
│       ├── openjdk.yaml
│       ├── poetbot.yaml
│       ├── s2h.yaml
│       └── ssh.yaml
└── LICENSE