diff options
| author | Fuwn <[email protected]> | 2026-02-18 07:52:13 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-18 07:52:13 +0000 |
| commit | d645b9f595a9fc2c680c825c15a5efb4c35c4969 (patch) | |
| tree | 26918a55df1baa11776c08364a3cac794a45aa90 | |
| parent | feat(response): Add input/sensitive-input handling (diff) | |
| download | september-d645b9f595a9fc2c680c825c15a5efb4c35c4969.tar.xz september-d645b9f595a9fc2c680c825c15a5efb4c35c4969.zip | |
build: Switch from Earthly to Dockerfile
| -rw-r--r-- | .dockerignore (renamed from .earthlyignore) | 5 | ||||
| -rw-r--r-- | Dockerfile | 42 | ||||
| -rw-r--r-- | Earthfile | 39 | ||||
| -rw-r--r-- | justfile | 28 |
4 files changed, 73 insertions, 41 deletions
diff --git a/.earthlyignore b/.dockerignore index 0957c09..7a3a0c7 100644 --- a/.earthlyignore +++ b/.dockerignore @@ -3,6 +3,7 @@ !.git/ !src/ !build.rs -!Cargo.* +!Cargo.toml +!Cargo.lock +!Dockerfile !default.css - diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..37e6bb7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,42 @@ +# syntax=docker/dockerfile:1.7 + +ARG RUSTC_VERSION=stable + +FROM clux/muslrust:${RUSTC_VERSION} AS build + +WORKDIR /source + +RUN cargo new september + +WORKDIR /source/september + +COPY Cargo.toml Cargo.lock ./ + +RUN --mount=type=cache,target=/root/.cargo/registry \ + --mount=type=cache,target=/root/.cargo/git \ + cargo build --release + +COPY .git ./.git +COPY src ./src +COPY build.rs ./build.rs +COPY default.css . + +RUN --mount=type=cache,target=/root/.cargo/registry \ + --mount=type=cache,target=/root/.cargo/git \ + cargo build --release --bin september +RUN set -eux; \ + bin_path="$(find /source/september/target -type f -path '*/release/september' | head -n 1)"; \ + test -n "${bin_path}"; \ + strip -s "${bin_path}"; \ + cp "${bin_path}" /source/september/september +RUN strip -s /source/september/september + +FROM scratch AS runtime + +WORKDIR /september + +COPY --from=build /source/september/september ./september + +EXPOSE 80 + +ENTRYPOINT ["./september"] diff --git a/Earthfile b/Earthfile deleted file mode 100644 index fc13776..0000000 --- a/Earthfile +++ /dev/null @@ -1,39 +0,0 @@ -VERSION 0.7 - -image: - ARG tag=latest - - FROM scratch - - COPY +build/september . - - EXPOSE 80 - - CMD ["./september"] - - SAVE IMAGE --push fuwn/september:$tag - -build: - FROM messense/rust-musl-cross:x86_64-musl - - WORKDIR /source - - RUN cargo new september - - WORKDIR /source/september - - COPY Cargo.* . - - RUN --mount=type=cache,target=/usr/local/cargo/registry cargo build --release - - COPY .git .git - COPY src src - COPY build.rs build.rs - COPY Cargo.* . - COPY default.css . - - RUN --mount=type=cache,target=/usr/local/cargo/registry cargo build --release - RUN strip -s /source/september/target/x86_64-unknown-linux-musl/release/september - RUN mv /source/september/target/x86_64-unknown-linux-musl/release/september . - - SAVE ARTIFACT /source/september/september @@ -2,6 +2,11 @@ import? 'cargo.just' set allow-duplicate-recipes := true +name := "september" +ghcr_repo := "ghcr.io/gemrest/" + name +gitlab_repo := "registry.gitlab.com/gemrest/" + name +docker_hub_repo := "docker.io/gemrest/" + name + default: @just --list @@ -10,3 +15,26 @@ fetch: fmt: cargo +nightly fmt + +# Build once, then push both `latest` and the latest git tag to all registries. +publish-images: + #!/usr/bin/env bash + + set -euo pipefail + + git_tag="$(git describe --tags --abbrev=0)" + docker_tag="${git_tag#v}" + + docker build --platform linux/amd64 -f Dockerfile -t {{name}}:build . + + for registry in {{ghcr_repo}} {{gitlab_repo}} {{docker_hub_repo}}; do + docker tag {{name}}:build "$registry:latest" + docker tag {{name}}:build "$registry:$docker_tag" + done + + docker push "{{ghcr_repo}}:latest" + docker push "{{ghcr_repo}}:$docker_tag" + docker push "{{gitlab_repo}}:latest" + docker push "{{gitlab_repo}}:$docker_tag" + docker push "{{docker_hub_repo}}:latest" + docker push "{{docker_hub_repo}}:$docker_tag" |