♻️ Simple & Efficient Gemini-to-HTTP Proxy fuwn.net
proxy gemini-protocol protocol gemini http rust
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

build: Switch from Earthly to Dockerfile

Fuwn d645b9f5 c8d3edfb

+79 -47
+9
.dockerignore
··· 1 + ** 2 + 3 + !.git/ 4 + !src/ 5 + !build.rs 6 + !Cargo.toml 7 + !Cargo.lock 8 + !Dockerfile 9 + !default.css
-8
.earthlyignore
··· 1 - ** 2 - 3 - !.git/ 4 - !src/ 5 - !build.rs 6 - !Cargo.* 7 - !default.css 8 -
+42
Dockerfile
··· 1 + # syntax=docker/dockerfile:1.7 2 + 3 + ARG RUSTC_VERSION=stable 4 + 5 + FROM clux/muslrust:${RUSTC_VERSION} AS build 6 + 7 + WORKDIR /source 8 + 9 + RUN cargo new september 10 + 11 + WORKDIR /source/september 12 + 13 + COPY Cargo.toml Cargo.lock ./ 14 + 15 + RUN --mount=type=cache,target=/root/.cargo/registry \ 16 + --mount=type=cache,target=/root/.cargo/git \ 17 + cargo build --release 18 + 19 + COPY .git ./.git 20 + COPY src ./src 21 + COPY build.rs ./build.rs 22 + COPY default.css . 23 + 24 + RUN --mount=type=cache,target=/root/.cargo/registry \ 25 + --mount=type=cache,target=/root/.cargo/git \ 26 + cargo build --release --bin september 27 + RUN set -eux; \ 28 + bin_path="$(find /source/september/target -type f -path '*/release/september' | head -n 1)"; \ 29 + test -n "${bin_path}"; \ 30 + strip -s "${bin_path}"; \ 31 + cp "${bin_path}" /source/september/september 32 + RUN strip -s /source/september/september 33 + 34 + FROM scratch AS runtime 35 + 36 + WORKDIR /september 37 + 38 + COPY --from=build /source/september/september ./september 39 + 40 + EXPOSE 80 41 + 42 + ENTRYPOINT ["./september"]
-39
Earthfile
··· 1 - VERSION 0.7 2 - 3 - image: 4 - ARG tag=latest 5 - 6 - FROM scratch 7 - 8 - COPY +build/september . 9 - 10 - EXPOSE 80 11 - 12 - CMD ["./september"] 13 - 14 - SAVE IMAGE --push fuwn/september:$tag 15 - 16 - build: 17 - FROM messense/rust-musl-cross:x86_64-musl 18 - 19 - WORKDIR /source 20 - 21 - RUN cargo new september 22 - 23 - WORKDIR /source/september 24 - 25 - COPY Cargo.* . 26 - 27 - RUN --mount=type=cache,target=/usr/local/cargo/registry cargo build --release 28 - 29 - COPY .git .git 30 - COPY src src 31 - COPY build.rs build.rs 32 - COPY Cargo.* . 33 - COPY default.css . 34 - 35 - RUN --mount=type=cache,target=/usr/local/cargo/registry cargo build --release 36 - RUN strip -s /source/september/target/x86_64-unknown-linux-musl/release/september 37 - RUN mv /source/september/target/x86_64-unknown-linux-musl/release/september . 38 - 39 - SAVE ARTIFACT /source/september/september
+28
justfile
··· 2 2 3 3 set allow-duplicate-recipes := true 4 4 5 + name := "september" 6 + ghcr_repo := "ghcr.io/gemrest/" + name 7 + gitlab_repo := "registry.gitlab.com/gemrest/" + name 8 + docker_hub_repo := "docker.io/gemrest/" + name 9 + 5 10 default: 6 11 @just --list 7 12 ··· 10 15 11 16 fmt: 12 17 cargo +nightly fmt 18 + 19 + # Build once, then push both `latest` and the latest git tag to all registries. 20 + publish-images: 21 + #!/usr/bin/env bash 22 + 23 + set -euo pipefail 24 + 25 + git_tag="$(git describe --tags --abbrev=0)" 26 + docker_tag="${git_tag#v}" 27 + 28 + docker build --platform linux/amd64 -f Dockerfile -t {{name}}:build . 29 + 30 + for registry in {{ghcr_repo}} {{gitlab_repo}} {{docker_hub_repo}}; do 31 + docker tag {{name}}:build "$registry:latest" 32 + docker tag {{name}}:build "$registry:$docker_tag" 33 + done 34 + 35 + docker push "{{ghcr_repo}}:latest" 36 + docker push "{{ghcr_repo}}:$docker_tag" 37 + docker push "{{gitlab_repo}}:latest" 38 + docker push "{{gitlab_repo}}:$docker_tag" 39 + docker push "{{docker_hub_repo}}:latest" 40 + docker push "{{docker_hub_repo}}:$docker_tag"