diff --git a/.github/workflows/docker-images.yml b/.github/workflows/docker-images.yml index 0e0b378..f45ab88 100644 --- a/.github/workflows/docker-images.yml +++ b/.github/workflows/docker-images.yml @@ -14,44 +14,48 @@ jobs: include: - image: henrygd/beszel context: ./beszel - dockerfile: ./beszel/dockerfile_Hub + dockerfile: ./beszel/dockerfile_hub registry: docker.io username_secret: DOCKERHUB_USERNAME password_secret: DOCKERHUB_TOKEN + - image: henrygd/beszel-agent context: ./beszel - dockerfile: ./beszel/dockerfile_Agent - target: default-agent + dockerfile: ./beszel/dockerfile_agent registry: docker.io username_secret: DOCKERHUB_USERNAME password_secret: DOCKERHUB_TOKEN + - image: henrygd/beszel-agent-nvidia context: ./beszel - dockerfile: ./beszel/dockerfile_Agent - target: nvidia-agent + dockerfile: ./beszel/dockerfile_agent_nvidia + platforms: linux/amd64 registry: docker.io username_secret: DOCKERHUB_USERNAME password_secret: DOCKERHUB_TOKEN + - image: ghcr.io/${{ github.repository }}/beszel context: ./beszel - dockerfile: ./beszel/dockerfile_Hub + dockerfile: ./beszel/dockerfile_hub registry: ghcr.io username: ${{ github.actor }} password_secret: GITHUB_TOKEN + - image: ghcr.io/${{ github.repository }}/beszel-agent context: ./beszel - dockerfile: ./beszel/dockerfile_Agent - target: default-agent + dockerfile: ./beszel/dockerfile_agent registry: ghcr.io username: ${{ github.actor }} password_secret: GITHUB_TOKEN + - image: ghcr.io/${{ github.repository }}/beszel-agent-nvidia context: ./beszel - dockerfile: ./beszel/dockerfile_Agent - target: nvidia-agent + dockerfile: ./beszel/dockerfile_agent_nvidia + platforms: linux/amd64 registry: ghcr.io username: ${{ github.actor }} password_secret: GITHUB_TOKEN + permissions: contents: read packages: write @@ -103,8 +107,7 @@ jobs: with: context: "${{ matrix.context }}" file: ${{ matrix.dockerfile }} - platforms: linux/amd64,linux/arm64,linux/arm/v7 + platforms: ${{ matrix.platforms || 'linux/amd64,linux/arm64,linux/arm/v7' }} push: ${{ github.ref_type == 'tag' }} tags: ${{ steps.metadata.outputs.tags }} labels: ${{ steps.metadata.outputs.labels }} - target: ${{ matrix.target }} diff --git a/beszel/dockerfile_Agent b/beszel/dockerfile_agent similarity index 65% rename from beszel/dockerfile_Agent rename to beszel/dockerfile_agent index 9f39991..8ca3cd5 100644 --- a/beszel/dockerfile_Agent +++ b/beszel/dockerfile_agent @@ -17,18 +17,10 @@ RUN rm -rf /tmp/* # -------------------------- # Final image: default scratch-based agent # -------------------------- -FROM scratch AS default-agent +FROM scratch COPY --from=builder /agent /agent # this is so we don't need to create the /tmp directory in the scratch container COPY --from=builder /tmp /tmp -ENTRYPOINT ["/agent"] - -# -------------------------- -# Final image: GPU-enabled agent with nvidia-smi -# -------------------------- -FROM nvidia/cuda:12.9.0-base-ubuntu22.04 AS nvidia-agent -COPY --from=builder /agent /agent -COPY --from=builder /tmp /tmp -ENTRYPOINT ["/agent"] +ENTRYPOINT ["/agent"] \ No newline at end of file diff --git a/beszel/dockerfile_agent_nvidia b/beszel/dockerfile_agent_nvidia new file mode 100644 index 0000000..77a7a50 --- /dev/null +++ b/beszel/dockerfile_agent_nvidia @@ -0,0 +1,21 @@ +FROM --platform=$BUILDPLATFORM golang:alpine AS builder + +WORKDIR /app + +COPY go.mod go.sum ./ +# RUN go mod download +COPY *.go ./ +COPY cmd ./cmd +COPY internal ./internal + +# Build +ARG TARGETOS TARGETARCH +RUN CGO_ENABLED=0 GOGC=75 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags "-w -s" -o /agent ./cmd/agent + +# -------------------------- +# Final image: GPU-enabled agent with nvidia-smi +# -------------------------- +FROM nvidia/cuda:12.9.1-base-ubuntu22.04 +COPY --from=builder /agent /agent + +ENTRYPOINT ["/agent"] diff --git a/beszel/dockerfile_Hub b/beszel/dockerfile_hub similarity index 100% rename from beszel/dockerfile_Hub rename to beszel/dockerfile_hub