From d56ab2ff64984db600509c19ba145b05bbc51f3a Mon Sep 17 00:00:00 2001 From: Bryson Steck Date: Sun, 20 Jul 2025 19:41:24 -0600 Subject: [PATCH] add docker builds, changed name to picca --- Cargo.lock | 40 ++++++++++++++++++++-------------------- Cargo.toml | 4 ++-- Justfile | 7 +++++-- docker/Dockerfile | 30 ++++++++++++++++++++++++++++++ docker/entrypoint.sh | 17 +++++++++++++++++ 5 files changed, 74 insertions(+), 24 deletions(-) create mode 100644 docker/Dockerfile create mode 100755 docker/entrypoint.sh diff --git a/Cargo.lock b/Cargo.lock index d595310..a138bd6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -364,26 +364,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "proc-macro2" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "psha" -version = "0.3.0" +name = "picca" +version = "0.3.1" dependencies = [ "ascon-hash", "belt-hash", @@ -411,6 +393,24 @@ dependencies = [ "whirlpool", ] +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + [[package]] name = "quote" version = "1.0.40" diff --git a/Cargo.toml b/Cargo.toml index 0d706be..d295e97 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] -name = "psha" -version = "0.3.0" +name = "picca" +version = "0.3.1" edition = "2021" [dependencies] diff --git a/Justfile b/Justfile index efdefb8..7f5156f 100644 --- a/Justfile +++ b/Justfile @@ -1,7 +1,7 @@ alias build := build-release version := `cat Cargo.toml | grep -m1 version | awk -F' ' '{print $3}' | sed 's|"||g'` -major_version := `echo {{version}} | awk -F'.' '{print$1}'` +major_version := shell("echo $1 | awk -F'.' '{print$1}'", version) uid := `id -u` gid := `id -g` date := `date -u --rfc-3339=seconds` @@ -15,7 +15,7 @@ build-release: build-debug: cargo build -build-docker: +build-docker: clean docker build -t picca:{{version}} -t picca:{{major_version}} -t picca:latest \ --build-arg VERSION={{version}} --build-arg DATE="{{date}}" -f docker/Dockerfile . @@ -30,3 +30,6 @@ push-docker-latest: build-docker push-docker docker tag picca:{{version}} forge.steck.dev/bryson/picca:latest docker push forge.steck.dev/bryson/picca:latest docker image rm forge.steck.dev/bryson/picca:latest + +clean: + cargo clean diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..0ae8f70 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,30 @@ +FROM rust:1-alpine AS build + +ENV PICCA_DOCKER="true" + +WORKDIR /usr/src/picca +COPY . . + +RUN apk upgrade --no-cache && apk add musl-dev +RUN cargo install --path . && cargo clean + +FROM alpine:3 AS package + +ARG VERSION +ARG DATE + +LABEL org.opencontainers.image.title="picca" +LABEL org.opencontainers.image.authors="bryson@steck.dev" +LABEL org.opencontainers.image.version="${VERSION}" +LABEL org.opencontainers.image.url="https://forge.steck.dev/bryson/-/packages/container/picca/${VERSION}" +LABEL org.opencontainers.image.source="https://forge.steck.dev/bryson/picca" +LABEL org.opencontainers.image.created="${DATE}" + +RUN apk upgrade --no-cache +RUN mkdir /etc/picca +COPY ./docker/entrypoint.sh /usr/local/bin/entrypoint.sh + +COPY --from=build /usr/src/picca /usr/src +COPY --from=build /usr/local/cargo/bin/picca /usr/local/bin + +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 0000000..5d9bf19 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# Entrypoint file for picca Docker containers + +if [ -z "$UID" ]; then + echo "UID not set! Setting to id $(id -u)" + export UID=$(id -u) +fi + +if [ -z "$GID" ]; then + echo "GID not set! Setting to id $(id -g)" + export GID=$(id -g) +fi + +addgroup -g $GID dockeruser +adduser -u $UID -G $(grep :$GID: /etc/group | awk -F: '{print $1}') -D dockeruser + +su -p - dockeruser -c "picca $@"