From 92f89bb3135e443132d1760834e0f4e9273950dc Mon Sep 17 00:00:00 2001 From: Gabe Cook Date: Mon, 17 Mar 2025 00:40:14 -0500 Subject: [PATCH 1/4] Build a smaller Docker image --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index af7aeea..5e489df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM golang:alpine AS builder RUN apk add build-base COPY . /src -RUN cd /src/cmd/WatchYourLAN/ && CGO_ENABLED=0 go build -o /WatchYourLAN . +RUN cd /src/cmd/WatchYourLAN/ && CGO_ENABLED=0 go build -ldflags='-w -s' -o /WatchYourLAN . FROM alpine @@ -14,4 +14,4 @@ RUN apk add --no-cache arp-scan tzdata \ COPY --from=builder /WatchYourLAN /app/ -ENTRYPOINT ["./WatchYourLAN"] \ No newline at end of file +ENTRYPOINT ["./WatchYourLAN"] From 0b34f6181f61b7495db978d29210ca4f1837b2ac Mon Sep 17 00:00:00 2001 From: Gabe Cook Date: Mon, 17 Mar 2025 01:20:15 -0500 Subject: [PATCH 2/4] Install dependencies in a separate step --- Dockerfile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5e489df..88532c2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,14 @@ FROM golang:alpine AS builder RUN apk add build-base -COPY . /src -RUN cd /src/cmd/WatchYourLAN/ && CGO_ENABLED=0 go build -ldflags='-w -s' -o /WatchYourLAN . + +WORKDIR /src +COPY go.mod go.sum . +RUN go mod download + +COPY . . +WORKDIR /src/cmd/WatchYourLAN +RUN CGO_ENABLED=0 go build -ldflags='-w -s' -o /WatchYourLAN . FROM alpine From a2fd352bf1b195eae5c775a813695314953e0210 Mon Sep 17 00:00:00 2001 From: Gabe Cook Date: Mon, 17 Mar 2025 01:36:46 -0500 Subject: [PATCH 3/4] Use GitHub Actions cache for Docker build --- .github/workflows/main-docker-all.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main-docker-all.yml b/.github/workflows/main-docker-all.yml index 0b99c32..e1cfe3f 100644 --- a/.github/workflows/main-docker-all.yml +++ b/.github/workflows/main-docker-all.yml @@ -56,4 +56,6 @@ jobs: ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }} ghcr.io/${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:v2 ghcr.io/${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:latest - ghcr.io/${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }} \ No newline at end of file + ghcr.io/${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }} + cache-from: type=gha + cache-to: type=gha,mode=max From 93852060cc1e1f433861b9bd9a35869d926f83ce Mon Sep 17 00:00:00 2001 From: Gabe Cook Date: Mon, 17 Mar 2025 22:38:00 -0500 Subject: [PATCH 4/4] Use native Go cross-compilation --- Dockerfile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 88532c2..8e255b2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,18 @@ -FROM golang:alpine AS builder +FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx -RUN apk add build-base +FROM --platform=$BUILDPLATFORM golang:alpine AS builder + +COPY --from=xx / / WORKDIR /src -COPY go.mod go.sum . + +COPY go.mod go.sum ./ RUN go mod download COPY . . -WORKDIR /src/cmd/WatchYourLAN -RUN CGO_ENABLED=0 go build -ldflags='-w -s' -o /WatchYourLAN . + +ARG TARGETPLATFORM +RUN CGO_ENABLED=0 xx-go build -ldflags='-w -s' -o /WatchYourLAN ./cmd/WatchYourLAN FROM alpine