From c1602da76afa839ef2dc786ed53d0e283dc6c5d2 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Sat, 5 Oct 2024 10:10:29 +0200 Subject: [PATCH 1/2] build image on release --- .github/workflows/release-image.yml | 24 ++++++++++++++++++++ Dockerfile | 35 ++++++++++------------------- 2 files changed, 36 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/release-image.yml diff --git a/.github/workflows/release-image.yml b/.github/workflows/release-image.yml new file mode 100644 index 000000000..a6069acba --- /dev/null +++ b/.github/workflows/release-image.yml @@ -0,0 +1,24 @@ +name: Build and push docker image on release + +on: [release] + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + push: true + tags: ghcr.io/mueckinger/rustic:latest,ghcr.io/mueckinger/rustic:${{ github.ref_name }} + build-args: RUSTIC_VERSION=${{ github.ref_name }} diff --git a/Dockerfile b/Dockerfile index a0719de41..58afa1448 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,12 @@ -# Improve build speed with cached deps -ARG RUST_VERSION=1.76.0 -FROM lukemathwalker/cargo-chef:latest-rust-${RUST_VERSION} AS chef -WORKDIR /app - -FROM chef AS planner -COPY . . -RUN cargo chef prepare --recipe-path recipe.json - -FROM chef AS builder -COPY --from=planner /app/recipe.json recipe.json -# Build dependencies - this is the caching Docker layer! -RUN cargo chef cook --release --recipe-path recipe.json -# Build application -COPY . . -RUN cargo build --release - -# why we dont use alpine for base image - https://andygrove.io/2020/05/why-musl-extremely-slow/ -FROM debian:bookworm-slim as runtime - -COPY --from=builder /app/target/release/rustic /usr/local/bin - -ENTRYPOINT ["/usr/local/bin/rustic"] +FROM alpine AS builder +ARG RUSTIC_VERSION +RUN wget https://github.com/rustic-rs/rustic/releases/download/${RUSTIC_VERSION}/rustic-${RUSTIC_VERSION}-x86_64-unknown-linux-musl.tar.gz && \ + tar -xzf rustic-${RUSTIC_VERSION}-x86_64-unknown-linux-musl.tar.gz && \ + mkdir /etc_files && \ + touch /etc_files/passwd && \ + touch /etc_files/group + +FROM scratch +COPY --from=builder /rustic / +COPY --from=builder /etc_files/ /etc/ +ENTRYPOINT ["/rustic"] From d52264fab360d3e63be14b004174c343a704e486 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Sat, 5 Oct 2024 10:24:57 +0200 Subject: [PATCH 2/2] added Docker, update URI --- .github/workflows/release-image.yml | 2 +- README.md | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-image.yml b/.github/workflows/release-image.yml index a6069acba..279630f9b 100644 --- a/.github/workflows/release-image.yml +++ b/.github/workflows/release-image.yml @@ -20,5 +20,5 @@ jobs: uses: docker/build-push-action@v6 with: push: true - tags: ghcr.io/mueckinger/rustic:latest,ghcr.io/mueckinger/rustic:${{ github.ref_name }} + tags: ghcr.io/rustic-rs/rustic:latest,ghcr.io/rustic-rs/rustic:${{ github.ref_name }} build-args: RUSTIC_VERSION=${{ github.ref_name }} diff --git a/README.md b/README.md index acc21458f..9d11670e1 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,12 @@ Or you can check out the Nightly binaries are available [here](https://rustic.cli.rs/docs/nightly_builds.html). +### Docker + +```bash +docker pull ghcr.io/rustic-rs/rustic +``` + ### From source **Beware**: This installs the latest development version, which might be