From e4108047276f44bfcb1754b7baba5eedf8b3143c Mon Sep 17 00:00:00 2001 From: Amir Raminfar Date: Sun, 1 Mar 2026 16:17:18 -0800 Subject: [PATCH] chore: optimize Docker build and CI workflows (#4499) Co-authored-by: Claude Opus 4.6 --- .dockerignore | 1 - .github/workflows/deploy.yml | 12 ++---------- .github/workflows/dev.yml | 2 +- Dockerfile | 16 +++++----------- 4 files changed, 8 insertions(+), 23 deletions(-) diff --git a/.dockerignore b/.dockerignore index 461c07e9..807c209a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,4 +6,3 @@ dist .git e2e docs -internal/agent/pb/ diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 7d47f7a9..461fe61b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -17,15 +17,11 @@ jobs: name: Install pnpm - uses: actions/setup-node@v6 name: Install Node - with: - node-version: 24.14.0 - - run: corepack enable - - run: pnpm --version - - uses: actions/setup-node@v6 with: node-version: 24.14.0 cache: "pnpm" cache-dependency-path: "**/pnpm-lock.yaml" + - run: corepack enable - name: Install dependencies run: pnpm install --frozen-lockfile --prefer-offline - name: Run Tests @@ -59,15 +55,11 @@ jobs: name: Install pnpm - uses: actions/setup-node@v6 name: Install Node - with: - node-version: 24.14.0 - - run: corepack enable - - run: pnpm --version - - uses: actions/setup-node@v6 with: node-version: 24.14.0 cache: "pnpm" cache-dependency-path: "**/pnpm-lock.yaml" + - run: corepack enable - name: Install dependencies run: pnpm install - name: Set up Docker Buildx diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 717c2bf2..082c636d 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -48,7 +48,7 @@ jobs: with: context: . push: true - platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8 + platforms: linux/amd64,linux/arm64/v8 tags: ${{ steps.meta.outputs.tags }} build-args: TAG=${{ steps.meta.outputs.version }} labels: ${{ steps.meta.outputs.labels }} diff --git a/Dockerfile b/Dockerfile index c331c87e..cbf2e7dd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ COPY package.json ./ RUN pnpm install --offline --ignore-scripts --no-optional # Copy assets and translations to build -COPY .* *.config.ts *.config.js *.config.cjs ./ +COPY vite.config.ts tsconfig.json .prettierrc.cjs .npmrc ./ COPY assets ./assets COPY locales ./locales COPY public ./public @@ -24,17 +24,13 @@ RUN pnpm build FROM --platform=$BUILDPLATFORM golang:1.26-alpine AS builder -# install gRPC dependencies -RUN apk add --no-cache ca-certificates protoc protobuf-dev \ - && mkdir /dozzle \ - && go install google.golang.org/protobuf/cmd/protoc-gen-go@latest \ - && go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest +RUN apk add --no-cache ca-certificates && mkdir /dozzle WORKDIR /dozzle # Copy go mod files COPY go.* ./ -RUN go mod download +RUN --mount=type=cache,target=/go/pkg/mod go mod download # Copy all other files COPY internal ./internal @@ -50,11 +46,9 @@ COPY --from=node /build/dist ./dist ARG TAG=dev ARG TARGETOS TARGETARCH -# Generate protos and graphql -RUN go generate ./... - # Build binary -RUN GOEXPERIMENT=jsonv2 GOOS=$TARGETOS GOARCH=$TARGETARCH CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/amir20/dozzle/internal/support/cli.Version=$TAG" -o dozzle +RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build \ + GOEXPERIMENT=jsonv2 GOOS=$TARGETOS GOARCH=$TARGETARCH CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/amir20/dozzle/internal/support/cli.Version=$TAG" -o dozzle RUN mkdir /data