From bf3bf693bd550c68f0921a997e3572c26f6686b7 Mon Sep 17 00:00:00 2001 From: Frank Villaro-Dixon Date: Fri, 24 May 2024 22:16:21 +0200 Subject: [PATCH] build dockerfile Signed-off-by: Frank Villaro-Dixon --- .dockerignore | 2 ++ .forgejo/workflows/build.yml | 42 ++++++++++++++++++++++++++++++++++++ Dockerfile | 23 ++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 .dockerignore create mode 100644 .forgejo/workflows/build.yml create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5874b8c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.git +target diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml new file mode 100644 index 0000000..ddf1cee --- /dev/null +++ b/.forgejo/workflows/build.yml @@ -0,0 +1,42 @@ +name: ci + +on: + push: + branches: + - docker + +jobs: + docker-build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Forge Hub + uses: docker/login-action@v3 + with: + registry: forge.k3s.fr + username: ${{ secrets.FORGEHUB_USERNAME }} + password: ${{ secrets.FORGEHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: forge.k3s.fr/frank/opentsdb-auth-proxy:latest + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.FORGEHUB_USERNAME }} + password: ${{ secrets.FORGEHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: frankkkkk/opentsdb-auth-proxy:latest \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4e266a9 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM rust:1.78 AS chef +# We only pay the installation cost once, +# it will be cached from the second build onwards +RUN cargo install cargo-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 --bin opentsdb-auth-proxy + +# We do not need the Rust toolchain to run the binary! +FROM ubuntu:22.04 +WORKDIR app +COPY --from=builder /app/target/release/opentsdb-auth-proxy /usr/local/bin +ENTRYPOINT ["/usr/local/bin/opentsdb-auth-proxy"] \ No newline at end of file